gpt4 book ai didi

java - 从 jtable 获取对象的正确方法

转载 作者:行者123 更新时间:2023-12-01 11:18:13 25 4
gpt4 key购买 nike

对大家来说都是美好的一天;我有表模型扩展 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,

等等请解决

最佳答案

每次从表中选择一行时,都会添加一个新的 ActionListener。这就是为什么你会得到重复的输出。

我看不到你的很多代码,但我认为控制列表选择的整个内容是多余的。操作事件在“editMI”组件本身内触发。

因此,拥有以下内容就足够了:

               editMI.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.print(new CarTableModel(carsList).getCar(carTable.getSelectedRow())+"\n");
}
});

独立于表的选择事件。

关于java - 从 jtable 获取对象的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31542511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com