我使用Swing和JTable创建了一个UI。我已经实现了ListSelectionListener
,通过它我可以根据表中选定的行获取记录。选择后我无法取消选择该行。
所以基本上我应该只需点击一下就可以选择一行,然后我就可以再次点击取消选择该行。
我尝试使用tableName.getSelectionModel.clearSelection
,但我不知道如何查看是否选择了某行。什么会告诉我这个?
我尝试的另一个解决方案是使用鼠标单击侦听器。同样,我无法编写条件来检查鼠标单击是否发生在先前选定的行上。有没有办法让我选择上一行?
我正在使用DefaultTableModel
。
答案 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);
}
};