java - 取消选择 JTable 的行

标签 java swing jtable

我的屏幕上有 7 个表格。由于它们是独立的表格,因此我可以从每个表格中选择一个单元格。

虽然我希望每次选择表格中的单元格时,我都希望从之前选择的单元格的表格中取消选择单元格,因此也可以取消选择其他表格中的单元格。

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

此外,每当单击屏幕上的任意位置鼠标时,我都希望取消选择所选单元格。

我尝试过 clearselection(),但它似乎不起作用。

最佳答案

创建 TableGroup执行SINGLE_SELECTION横跨一组 table ,每个 table 都有自己的 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 .

关于java - 取消选择 JTable 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795281/

相关文章:

java - TableCellRenderer 为许多单元格设置颜色,而不仅仅是一个

java - 更改 ImageIcon 的大小

java - HttpURLConnection.getResponseCode() 不返回 301 (在 java 中)

java - JSP - session 属性 null 中的 ArrayList

java - 如何使 JFrame 窗口仅在我按下前一个 JFrame 窗口的 JButton 后才出现?

java - 我如何在 JTabbedPane 的选项卡中添加 JScrollPane

Java swing - 通过 alpha setBackground 在组件中淡入淡出,正确同步

java - 从 ArrayList 填充 JTable

java - 游戏循环性能问题

java - 尝试在空对象引用上调用虚拟方法 'int java.util.Random.nextInt(int)' [Android]