java从jtable获取对象的正确方法
对所有人来说都是美好的一天; 我让表模型扩展AbstractTableModel,将对象添加到jtable,它很好用 并使用此代码从表中获取对象
ListSelectionModel rowSM1 = carTable.getSelectionModel();
rowSM1.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting())
return;
if (carTable.getSelectedRow() < 0) {
try {
throw new Exception();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else {
editMI.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.print(new CarTableModel(carsList).getCar(carTable.getSelectedRow())+"\n");
}
});
}
}
});
和它的工作,并给我所选行的对象 但当选择其他行时,给我他对象并根据选择重复它 如果第二个选择重复两次如果第三个选择重复3次 像下一个:
第一选择
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
第二选择
Car{id=3, carLicense=CarLicense{id=3, human=Human{id=2,
Car{id=3, carLicense=CarLicense{id=3, human=Human{id=2,
第三选择
Car{id=2, carLicense=CarLicense{id=2, human=Human{id=1,
Car{id=2, carLicense=CarLicense{id=2, human=Human{id=1,
Car{id=2, carLicense=CarLicense{id=2, human=Human{id=1,
第四选择
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
Car{id=1, carLicense=CarLicense{id=1, human=Human{id=2,
等等 请解决任何问题
# 1 楼答案
每次从表中选择一行时,都会添加一个新的ActionListener。 这就是为什么你会得到重复的输出
我看不到你的很多代码,但我认为控制列表选择的所有东西都是多余的。 操作事件在“editMI”组件本身内触发
因此,只要有:
独立于表的选择事件