我有带有行和列的JTable,当我编辑索引为4的列中的任何单元格时,我需要->应该在同一行中更改“ VALUE”,但索引为5的下一个列。我有下一个代码,但它不起作用
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
if (table.getSelectedRow()>=0) {
try {
if (table.getSelectedColumn()==4){
table.setValueAt("VALUE", 0, 0);
}
} catch (ArrayIndexOutOfBoundsException ee){
ee.printStackTrace();
}
}
}
});
它有一个错误:
在MainFrame $ 3.tableChanged(MainFrame.java:188)在javax.swing.table.AbstractTableModel.fireTableChanged(未知源)在javax.swing.table.AbstractTableModel.fireTableCellUpdated(未知源)在javax.swing.table.DefaultTableModel.setValueAt (未知源)在javax.swing.JTable.setValueAt(未知源)
因为它具有无限循环。请帮帮我。
对我来说,您的错误与您依赖所选列这一事实有关,而您应该依赖于事件本身提供的内容,如下所示:
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
if (e.getType() == TableModelEvent.UPDATE) {
final int row = e.getFirstRow();
final int column = e.getColumn();
if (column == 4) {
table.setValueAt("VALUE", row, column + 1);
}
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句