我需要取消JTable模型对象中的所有选择。 Java提供了这个函数“clearSelection()”,根据我的理解,这就是我所需要的。
但我很困惑为什么可以在JTable对象以及JTable对象的选择模型上调用此函数:
1) mytable.clearSelection();
2) mytable.getSelectionModel().clearSelection();
两种方式都有效,但我不明白在什么情况下,SelectionModel的clearSelection()(如2))会有任何意义。据我了解SelectionModels,它们用于决定JTable允许的选择类型。我使用SelectionModel只允许选择一行
//allow only one row to be selected
mytable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
在哪种情况下首选哪种方式?是否有充分的理由不使用方式1?
如果有人对此有一些初学友好的解释,我会很高兴。 Thx提前。
答案 0 :(得分:7)
以下是JTable#clearSelection()
public void clearSelection() {
selectionModel.clearSelection();
columnModel.getSelectionModel().clearSelection();
}
如您所见,有两个ListSelectionModel
被清除,因为您可以选择列和/或行和/或单元格。
来自Oracle教程:
JTable使用一个非常简单的选择概念,作为一个管理 行和列的交集。它不是为完全处理而设计的 独立的细胞选择。
ListSelectionModel
处理选择的所有方面,例如选择哪一行,我们如何选择某些行等...不仅仅是选择的种类!
the Oracle JTable tutorial
答案 1 :(得分:5)
通常当您看到两个类似的方法时,因为该表将为您调用SelectionModel.clearSelection()方法。所以表方法是一种方便的方法。
在这种情况下,实际代码为:
public void clearSelection()
{
selectionModel.clearSelection();
columnModel.getSelectionModel().clearSelection();
}
因此,行和列选择模型都被清除。