Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 取消选择JTable中的选定行_Java_Swing_Jtable_Listselectionlistener - Fatal编程技术网

Java 取消选择JTable中的选定行

Java 取消选择JTable中的选定行,java,swing,jtable,listselectionlistener,Java,Swing,Jtable,Listselectionlistener,我使用Swing和JTable创建了一个UI。我已经实现了一个ListSelectionListener,通过它我可以根据表中选定的行获取记录。我无法在选择后取消选择该行 所以基本上我应该能够用一次点击来选择一行,然后我应该能够用另一次点击来取消选择该行 我尝试使用tableName.getSelectionModel.clearSelection,但我不知道如何查看行是否被选中。你会怎么告诉我 我尝试的另一个解决方案是使用鼠标单击侦听器。同样,我无法编写条件来检查鼠标单击是否发生在先前选定的行

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

所以基本上我应该能够用一次点击来选择一行,然后我应该能够用另一次点击来取消选择该行

我尝试使用
tableName.getSelectionModel.clearSelection
,但我不知道如何查看行是否被选中。你会怎么告诉我

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


我使用的是
DefaultTableModel

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


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

它可能很旧,但可以正常工作

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);
    }
};
当然,请参阅或如果您想直接使用SelectionModel,请检查此问题。。