java - JTable.clearSelection() 与 Jtable.getSelectionModel.clearSelection() - 何时使用什么?

标签 java swing jtable selection selectionmodel

我需要取消 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 吗?

如果有人对此有一些初学者友好的解释,我会很高兴。提前致谢。

最佳答案

这里是JTable#clearSelection()的实现

public void clearSelection() {
    selectionModel.clearSelection();
    columnModel.getSelectionModel().clearSelection();
}

如您所见,有两个 ListSelectionModel 被清除,因为您可以选择列和/或行和/或单元格。

来自 Oracle 教程:

JTable uses a very simple concept of selection, managed as an intersection of rows and columns. It was not designed to handle fully independent cell selections.

ListSelectionModel 处理选择的所有方面,例如选择了哪一行,我们如何选择某些行等...不仅是选择的种类!
更多信息请参阅 the Oracle JTable tutorial

关于java - JTable.clearSelection() 与 Jtable.getSelectionModel.clearSelection() - 何时使用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18337580/

相关文章:

java - 用 java lambdas 重构一个 switch case

java - 从外部类更新 JPanel 只会添加另一个类,但不会替换它

java - 选择表中的行时更改文本框中的文本

java - 创建一个带有按钮和目录文件列表的表格

java - 编写一个读取二进制文件的方法

java - 重新初始化 transient 变量的正确方法

java - 只接受某些证书

java - Java 中声明式 GUI 编程的建议

java - 让 Swing Timer 执行 N 次?

java - JComboBox 和 JTable 作为 ListCellRenderer 组件