如何向JTable添加自定义Cell Editor Listener?

时间:2013-08-01 17:53:02

标签: java swing jtable tablecelleditor

我开始输入我的代码:

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

我通过论坛四处寻找解决方案,但它们让我更加困惑。

每个提示都会受到赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:3)

您的方法不正确。 您可以轻松检测TableModel中的数据更改,特别是setValueAt方法。一旦检测到更改并对其做出反应,您必须调用其中一个fireTable..方法让表和所有其他侦听器知道数据已更改

根本不需要将任何监听器分配给单元格编辑器。