取消选择JTable行

时间:2016-08-05 17:57:20

标签: java swing jtable

我的屏幕上有7张桌子。由于它们是独立的表,我能够从每个表中选择一个单元格。

虽然我希望每当我在表格中选择一个单元格时,我希望从表格中取消选择单元格,之前选择了一个单元格,以及其他表格中的单元格。

基本上我想一次从一张桌子中选择一个单元格。

每当我在屏幕上的任何地方点击鼠标时,我都希望取消选择所选单元格。

我已经尝试了clearselection(),但它似乎无效。

1 个答案:

答案 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,见herehere