【问题标题】:Deselecting the selected row in a JTable取消选择 JTable 中的选定行
【发布时间】:2014-09-07 04:40:48
【问题描述】:

我已经使用带有 JTable 的 Swing 创建了一个 UI。我已经实现了一个ListSelectionListener,通过它我可以根据表中的选定行获取记录。选择后无法取消选择该行。

所以基本上我应该能够单击一次选择一行,然后我应该能够再次单击取消选择该行。

我尝试使用tableName.getSelectionModel.clearSelection,但我不知道如何查看是否选择了一行。这会告诉我什么?

我尝试的另一个解决方案是使用鼠标单击侦听器。同样,我无法编写条件来检查鼠标单击是否发生在先前选择的行上。有没有办法让我选择上一行?

我正在使用DefaultTableModel

【问题讨论】:

标签: java swing jtable listselectionlistener


【解决方案1】:

默认情况下,通过在使用鼠标单击时按住“Control”键来支持此功能。这是大多数应用程序使用的标准。

如果您真的想使用非标准方法,那么您可能应该自定义ListSelectionModel。我猜你会覆盖setSelectionInterval(...) 方法。也就是说,您将首先检查当前是否选择了该行。如果是这样,则调用clearSelection() 方法并返回。否则调用super.setSelectionInterval(...)

【讨论】:

    【解决方案2】:

    它可能很旧,但它有效。

    table = new JTable() {
        public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend)
        {
            //Always toggle on single selection
            super.changeSelection(rowIndex, columnIndex, !extend, extend);
        }
    };
    

    【讨论】:

    • 酷,正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2023-03-24
    • 2016-10-14
    • 2020-12-14
    相关资源
    最近更新 更多