取消选择JTable中的选定行

时间:2014-07-16 15:13:11

标签: java swing jtable listselectionlistener

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

所以基本上我应该只需点击一下就可以选择一行,然后我就可以再次点击取消选择该行。

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

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

我正在使用DefaultTableModel

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分: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);
    }
};