【发布时间】:2011-12-24 22:31:22
【问题描述】:
好的。我有一个大型项目,其中在启动时创建了一个特定的 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 here 发布的自定义侦听器,“sayIt”位是我自己的调试代码。
这一切都很好,但我想在每次重建表时完全删除监听器并再次添加它,因为它正在“记住”最后一个选定单元格的值,现在由于表数据无效是新的。
我相当肯定 'removePropertyChangeListener()' 类型调用会做到这一点,但它希望侦听器作为参数,我不知道如何找到它。
【问题讨论】:
-
正如@camickr 已经提到的:您没有显示的代码有问题,是时候进行 sscce 了
-
是的。我现在正在解决问题。我还使用选择侦听器自动选择单元格内容进行编辑(使用户不必不断双击),我认为这可能是问题,因为 camickr 的测试代码确实按预期工作。
标签: java swing jtable abstraction tablemodel