我开始输入我的代码:
private void addMyCellEditorListener() {
class MyCellEditorListener implements CellEditorListener
{
public MyCellEditorListener() {}
public void editingCanceled(ChangeEvent e) {}
public void editingStopped(ChangeEvent e) {
if(row == 0 && column > 0)
rechargeTableWithFindedResults(graphicTable.getValueAt(row,column));
else
dataTable.setValueAt(graphicTable.getValueAt(row,column),row,column);
}
};
.... addCellEditorListener(new MyCellEditorListener());
}
我希望我的graphicTable
通过为其定制CellEditorListener
来检测数据更改到其单元格中,但我真的无法理解如何添加它。我用以下代码尝试了几次:
DefaultCellEditor editor = new DefaultCellEditor(new JTextLabel());
editor.addCellEditorListener(new MyCellEditorListener());
this.graphicTable.setCellEditor(editor);
......或:
this.graphicTable.setCellEditor(this.graphicTable.getCellEditor().addCellEditorListener(new MyCellEditorListener()));
......但是这两种方法在两种情况下都给我NullPointerException
。
我通过论坛四处寻找解决方案,但它们让我更加困惑。
每个提示都会受到赞赏。
提前致谢。
答案 0 :(得分:3)
您的方法不正确。 您可以轻松检测TableModel
中的数据更改,特别是setValueAt
方法。一旦检测到更改并对其做出反应,您必须调用其中一个fireTable..
方法让表和所有其他侦听器知道数据已更改
根本不需要将任何监听器分配给单元格编辑器。