我的屏幕上有7张桌子。由于它们是独立的表,我能够从每个表中选择一个单元格。
虽然我希望每当我在表格中选择一个单元格时,我希望从表格中取消选择单元格,之前选择了一个单元格,以及其他表格中的单元格。
基本上我想一次从一张桌子中选择一个单元格。
每当我在屏幕上的任何地方点击鼠标时,我都希望取消选择所选单元格。
我已经尝试了clearselection()
,但它似乎无效。
答案 0 :(得分:1)
创建TableGroup
以在一组表中强制执行SINGLE_SELECTION
,每个表都有自己的ListSelectionModel
。下面的示例包含List<JTable>
,可以管理任意数量的表的选择。
用法:
SelectionGroup group = new SelectionGroup();
group.add(new JTable(…));
group.add(new JTable(…));
…
代码:
private static class TableGroup {
private final List<JTable> list = new ArrayList<>();
private void add(JTable table) {
list.add(table);
ListSelectionModel model = table.getSelectionModel();
model.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
model.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
for (JTable t : list) {
if (!t.equals(table)) {
t.clearSelection();
}
}
}
}
});
}
}
TableGroup
在概念上类似于ButtonGroup
,见here和here。