模块 java.desktop

接口 TreeSelectionModel

所有已知的实现类:
DefaultTreeSelectionModel , JTree.EmptySelectionModel

public interface TreeSelectionModel
此界面表示树组件选择的当前状态。有关使用树选择模型的信息和示例,请参阅 The Java Tutorial. 中的 如何使用树木

树选择的状态由一组 TreePaths 和可选的一组整数来表征。从 TreePath 到整数的映射是通过 RowMapper 的实例完成的。 TreeSelectionModel 不一定要有 RowMapper 才能正确运行,但没有 RowMapper getSelectionRows 将返回 null。

可以将 TreeSelectionModel 配置为仅允许一条路径 (SINGLE_TREE_SELECTION)、多条连续路径 (CONTIGUOUS_TREE_SELECTION) 或多条不连续路径 (DISCONTIGUOUS_TREE_SELECTION)。 RowMapper 用于确定 TreePaths 是否连续。在没有 RowMapper 的情况下,CONTIGUOUS_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTION 的行为相同,即它们允许在 TreeSelectionModel 中包含任意数量的路径。

对于 CONTIGUOUS_TREE_SELECTION 的选择模型,任何时候路径更改(setSelectionPathaddSelectionPath ...)都会再次检查 TreePaths 以确保它们是连续的。也可以通过调用 resetRowSelection 强制检查 TreePaths。如何将一组不连续的 TreePaths 映射到一个连续的集合留给这个接口的实现者来执行特定的策略。

实现应该合并添加到选择中的重复 TreePath。例如下面的代码

  TreePath[] paths = new TreePath[] { treePath, treePath };
  treeSelectionModel.setSelectionPaths(paths);
 
应该只选择一个路径:treePath,而不是 treePath 的两个副本。

引导 TreePath 是最后添加(或设置)的路径。前导行是对应于从 RowMapper 确定的 TreePath 的行。

  • 字段详细信息

    • SINGLE_TREE_SELECTION

      static final int SINGLE_TREE_SELECTION
      选择一次只能包含一个路径。
      参见:
    • CONTIGUOUS_TREE_SELECTION

      static final int CONTIGUOUS_TREE_SELECTION
      选择只能是连续的。仅当提供 RowMapper 实例时才会执行此操作。也就是说,如果未设置 RowMapper,则其行为与 DISCONTIGUOUS_TREE_SELECTION 相同。
      参见:
    • DISCONTIGUOUS_TREE_SELECTION

      static final int DISCONTIGUOUS_TREE_SELECTION
      选择可以包含任意数量的不一定连续的项目。
      参见:
  • 方法详情

    • setSelectionMode

      void setSelectionMode(int mode)
      设置选择模型,它必须是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。

      如果当前选择对新模式无效,这可能会更改选择。例如,如果在模式更改为 SINGLE_TREE_SELECTION 时选择了三个 TreePath,则只会保留一个 TreePath。由特定的实现来决定什么 TreePath 保持选中状态。

      参数:
      mode - 要设置的选择模式
    • getSelectionMode

      int getSelectionMode()
      返回当前选择模式,SINGLE_TREE_SELECTIONCONTIGUOUS_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTION 之一。
      返回:
      当前选择模式
    • setSelectionPath

      void setSelectionPath(TreePath  path)
      将选择设置为路径。如果这表示更改,则通知 TreeSelectionListeners。如果 path 为空,这与调用 clearSelection 具有相同的效果。
      参数:
      path - 选择的新路径
    • setSelectionPaths

      void setSelectionPaths(TreePath [] paths)
      将选择设置为路径。如果这表示更改,则通知 TreeSelectionListeners。如果 paths 为空,这与调用 clearSelection 具有相同的效果。
      参数:
      paths - 新选择
    • addSelectionPath

      void addSelectionPath(TreePath  path)
      将路径添加到当前选择。如果路径当前不在选择中,则会通知 TreeSelectionListeners。如果 path 为空,则这没有影响。
      参数:
      path - 添加到当前选择的新路径
    • addSelectionPaths

      void addSelectionPaths(TreePath [] paths)
      将路径添加到当前选择。如果路径中的任何路径当前不在选择中,则会通知 TreeSelectionListeners。如果 paths 为 null,则此操作无效。
      参数:
      paths - 添加到当前选择的新路径
    • removeSelectionPath

      void removeSelectionPath(TreePath  path)
      从选择中删除路径。如果路径在选择中,则通知 TreeSelectionListeners。如果 path 为空,则这没有影响。
      参数:
      path - 从选择中移除的路径
    • removeSelectionPaths

      void removeSelectionPaths(TreePath [] paths)
      从选择中删除路径。如果 paths 中的任何路径在选择中,则会通知 TreeSelectionListeners。如果 paths 为空,则此方法无效。
      参数:
      paths - 从选择中移除的路径
    • getSelectionPath

      TreePath  getSelectionPath()
      返回选择中的第一条路径。如何首先定义取决于实现者,并且不一定是根据 RowMapper 确定的具有最小整数值的 TreePath。
      返回:
      选择中的第一条路径
    • getSelectionPaths

      TreePath [] getSelectionPaths()
      返回选择中的路径。如果当前未选择任何内容,这将返回 null(或空数组)。
      返回:
      选择中的路径
    • getSelectionCount

      int getSelectionCount()
      返回选择的路径数。
      返回:
      选择的路径数
    • isPathSelected

      boolean isPathSelected(TreePath  path)
      如果路径 path 在当前选择中,则返回 true。
      参数:
      path - 要查找的路径
      返回:
      path 是否在当前选择中
    • isSelectionEmpty

      boolean isSelectionEmpty()
      如果选择当前为空,则返回 true。
      返回:
      当前选择是否为空
    • clearSelection

      void clearSelection()
      清空当前选择。如果这表示当前选择发生变化,则会通知选择监听。
    • setRowMapper

      void setRowMapper(RowMapper  newMapper)
      设置 RowMapper 实例。此实例用于确定特定 TreePath 的行。
      参数:
      newMapper - 要设置的 RowMapper
    • getRowMapper

      RowMapper  getRowMapper()
      返回能够将 TreePath 映射到行的 RowMapper 实例。
      返回:
      能够将 TreePath 映射到行的 RowMapper 实例
    • getSelectionRows

      int[] getSelectionRows()
      返回所有当前选定的行。如果没有选定的 TreePaths 或尚未设置 RowMapper,这将返回 null(或空数组)。
      返回:
      当前选择的所有行
    • getMinSelectionRow

      int getMinSelectionRow()
      返回从 RowMapper 获得的当前选定 TreePath 集的最小值。如果未选择任何内容,或者没有 RowMapper,则返回 -1。
      返回:
      从 RowMapper 获得的当前选定 TreePath 集合的最小值
    • getMaxSelectionRow

      int getMaxSelectionRow()
      返回从 RowMapper 获得的当前选定 TreePath 集的最大值。如果未选择任何内容,或者没有 RowMapper,则返回 -1。
      返回:
      从 RowMapper 获得的当前选定 TreePath 集合的最大值
    • isRowSelected

      boolean isRowSelected(int row)
      如果选择了 row 标识的行,则返回 true。
      参数:
      row - 要检查的行
      返回:
      行是否被选中
    • resetRowSelection

      void resetRowSelection()
      更新此对象从 TreePaths 到行的映射。这应该在从 TreePaths 到整数的映射发生变化时调用(例如,一个节点已经展开)。

      您通常不必调用它; JTree 及其关联的监听将为您调用它。如果您要实现自己的视图类,则必须调用它。

    • getLeadSelectionRow

      int getLeadSelectionRow()
      返回潜在客户选择索引。这是最后添加的索引。
      返回:
      铅选择指数
    • getLeadSelectionPath

      TreePath  getLeadSelectionPath()
      返回最后添加的路径。这可能不同于 JTree 维护的 leadSelectionPath 属性。
      返回:
      最后添加的路径
    • addPropertyChangeListener

      void addPropertyChangeListener(PropertyChangeListener  listener)
      将 PropertyChangeListener 添加到监听列表。监听已为所有属性注册。

      选择模式更改时将触发 PropertyChangeEvent。

      参数:
      listener - 要添加的 PropertyChangeListener
    • removePropertyChangeListener

      void removePropertyChangeListener(PropertyChangeListener  listener)
      从监听列表中删除 PropertyChangeListener。这将删除为所有属性注册的 PropertyChangeListener。
      参数:
      listener - 要删除的 PropertyChangeListener
    • addTreeSelectionListener

      void addTreeSelectionListener(TreeSelectionListener  x)
      将 x 添加到监听列表中,每次选定的 TreePath 集更改时都会通知这些监听。
      参数:
      x - 要添加的新监听器
    • removeTreeSelectionListener

      void removeTreeSelectionListener(TreeSelectionListener  x)
      从每次选定的 TreePath 集更改时通知的监听列表中删除 x。
      参数:
      x - 要删除的监听器