保持对TableModel更改的JTable选择

Joh*_*n M 15 java swing jtable tablemodel

JTable当我们做一个fireTableDataChanged()fireTableRowsUpdated()来自时,我们看到选择被清除TableModel.

这是预期的,还是我们做错了什么?我没有看到JTable关于清除/保留模型更新选择的(或其他相关类)的任何属性.

如果这是默认行为,是否有一种防止这种情况的好方法?也许某种方式在更新之前"锁定"选择并在之后解锁?

开发人员一直在尝试在更新之前保存选择并重新应用它.这有点慢.

这是Windows XP上的Java 1.4.2,如果这很重要的话.我们仅限于基于我们使用的某些供应商代码的版本.

Swa*_*jee 4

您需要保留选择然后重新应用它。

首先,您需要获取所有选定单元格的列表。

然后,当您使用新数据重新加载 JTable 时,您需要以编程方式重新应用这些相同的选择。

我想说的另一点是,如果表中的行数或列数在每次表模型重新加载后增加或减少,那么请不要费心保留选择。

在模型更新之前,用户可以选择值为“Duck”的第 2 行第 1 列。但模型更新后,相同的数据现在可以出现在第 4 行第 1 列中,并且原始单元格第 2 行第 1 列可能包含新数据,例如“Pig”。现在,如果您强制将选择设置为模型更新之前的选择,这可能不是用户想要的。

因此,以编程方式选择单元格可能是一把双刃剑。如果您不确定,请不要这样做。