好的。我有一个大型项目,其中一个特定的 jtable 在启动时创建并且永远不会重建。表格模型被刷新并根据各种用户操作重新绘制表格。
我添加了一个自定义 TableCellListener 类来响应单元格更改以及一个 AbstractAction。这是第一次用数据填充表时执行的代码。(如果没有“firstLoad”检查,每次重绘表格时都会附加多个操作)。
if(firstLoad) {
AbstractAction action = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
TableCellListener tcl = (TableCellListener)e.getSource();
sayIt("Row:" + tcl.getRow()+" Column:" + tcl.getColumn()+
" Old:" + tcl.getOldValue()+" New:" + tcl.getNewValue());
}
};
firstLoad = false;
TableCellListener tcl = new TableCellListener(table2, action);
}
TableCellListener 是Rob Camick 在此处发布的自定义侦听器,“sayIt”位是我自己的调试代码。
这一切都很好,但我想在每次重建表时完全删除监听器并再次添加它,因为它正在“记住”最后一个选定单元格的值,现在无效,因为表数据是新的。
我相当确定“removePropertyChangeListener()”类型调用会做到这一点,但它希望侦听器作为参数,我不知道如何找到它。