【发布时间】:2019-05-29 20:05:15
【问题描述】:
我想更改 JTable 中的选择。一种典型的做法是按照here的建议清除并重新选择:
ListSelectionModel model = table.getSelectionModel();
model.clearSelection();
model.addSelectionInterval(1, 1);
model.addSelectionInterval(18, 18);
遗憾的是,clearSelection 会立即更新 UI。因此,如果您单步执行此代码,选择会消失,然后再次返回,这可能会导致闪烁。
我试图通过忽略更改来阻止 UI 更新。但是,以下方法不起作用:
model.setValueIsAdjusting( true );
model.clearSelection();
model.setValueIsAdjusting( false );
似乎该标志在 UI 中被忽略了。在 clearSelection 之前和之后分别删除和重新添加 ListSelectionListeners 不起作用。 UI 仍在更新,可能会闪烁。
是否有更好的方法来更改具有多行的 JTable 的完整选择,可能不是连续选择?
对我来说,这不是一个大问题,因为您确实需要寻找闪烁。尽管如此,它并不是最优的。
【问题讨论】:
-
我使用
clearSelection时没有闪烁。正如@AndrewThompson 提到的那样,我建议您添加更多代码以获得帮助。 -
您的问题可能是您在event dispatch thread 中没有这样做。