模块 java.desktop

类 DefaultTreeSelectionModel

java.lang.Object
javax.swing.tree.DefaultTreeSelectionModel
所有已实现的接口:
Serializable , Cloneable , TreeSelectionModel
已知子类:
JTree.EmptySelectionModel

public class DefaultTreeSelectionModel extends Object implements Cloneable , Serializable , TreeSelectionModel
TreeSelectionModel 的默认实现。每当选择中的路径发生变化时,监听都会收到通知,而不是行。为了能够跟踪行更改,您可能希望成为树上扩展事件的监听并从那里测试更改。

resetRowSelection 从更新所选路径的任何方法调用。如果您将这些方法中的任何一个子类化以过滤允许选择的内容,请确保如果您不向 super 发送消息,请发送消息 resetRowSelectionWarning: 此类的序列化对象将与未来的 Swing 版本不兼容。当前的序列化支持适用于运行相同版本 Swing 的应用程序之间的短期存储或 RMI。从 1.4 开始,对所有 JavaBeans 的长期存储的支持已添加到 java.beans 包中。请参阅 XMLEncoder

参见:
  • 字段详细信息

    • SELECTION_MODE_PROPERTY

      public static final String  SELECTION_MODE_PROPERTY
      selectionMode 的属性名称。
      参见:
    • changeSupport

      protected SwingPropertyChangeSupport  changeSupport
      用于向注册的听众发送消息。
    • selection

      protected TreePath [] selection
      当前选择的路径。如果当前未选择任何内容,则将为 null。
    • listenerList

      protected EventListenerList  listenerList
      事件监听列表。
    • rowMapper

      protected transient RowMapper  rowMapper
      为给定路径提供一行。
    • listSelectionModel

      protected DefaultListSelectionModel  listSelectionModel
      处理维护列表选择模型。 RowMapper 用于从 TreePath 映射到一行,然后将值放在这里。
    • selectionMode

      protected int selectionMode
      选择的模式将为 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION。
    • leadPath

      protected TreePath  leadPath
      最后添加的路径。
    • leadIndex

      protected int leadIndex
      选择中引导路径的索引。
    • leadRow

      protected int leadRow
      排头阵。
  • 构造方法详细信息

    • DefaultTreeSelectionModel

      public DefaultTreeSelectionModel()
      创建一个新的 DefaultTreeSelectionModel 实例,该实例为空,选择模式为 DISCONTIGUOUS_TREE_SELECTION。
  • 方法详情

    • setRowMapper

      public void setRowMapper(RowMapper  newMapper)
      设置 RowMapper 实例。此实例用于确定特定 TreePath 的行。
      指定者:
      setRowMapper 在接口 TreeSelectionModel
      参数:
      newMapper - 要设置的 RowMapper
    • getRowMapper

      public RowMapper  getRowMapper()
      返回能够将 TreePath 映射到行的 RowMapper 实例。
      指定者:
      getRowMapper 在接口 TreeSelectionModel
      返回:
      能够将 TreePath 映射到行的 RowMapper 实例
    • setSelectionMode

      public void setSelectionMode(int mode)
      设置选择模型,它必须是 SINGLE_TREE_SELECTION、CONTIGUOUS_TREE_SELECTION 或 DISCONTIGUOUS_TREE_SELECTION 之一。如果模式不是定义值之一,则假定为 DISCONTIGUOUS_TREE_SELECTION

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

      将模式设置为定义类型以外的其他内容将导致模式变为 DISCONTIGUOUS_TREE_SELECTION

      指定者:
      setSelectionMode 在接口 TreeSelectionModel
      参数:
      mode - 要设置的选择模式
    • getSelectionMode

      public int getSelectionMode()
      返回选择模式,SINGLE_TREE_SELECTIONDISCONTIGUOUS_TREE_SELECTIONCONTIGUOUS_TREE_SELECTION 之一。
      指定者:
      getSelectionMode 在接口 TreeSelectionModel
      返回:
      当前选择模式
    • setSelectionPath

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

      public void setSelectionPaths(TreePath [] pPaths)
      设置选择。是否将提供的路径作为新选择取决于选择模式。如果提供的数组为 null 或为空,则选择被清除。如果选择模式为 SINGLE_TREE_SELECTION ,则仅使用 pPaths 中的第一条路径。如果选择模式为 CONTIGUOUS_TREE_SELECTION 且提供的路径不连续,则仅使用 pPaths 中的第一条路径。如果选择模式为 DISCONTIGUOUS_TREE_SELECTION ,则使用所有路径。

      pPaths 中的所有 null 路径都将被忽略。

      如果这代表一个变化,所有注册的 TreeSelectionListener 都会被通知。

      引导路径设置为最后一个唯一路径。

      getSelectionPaths 返回的路径与提供给此方法的路径顺序相同。

      指定者:
      setSelectionPaths 在接口 TreeSelectionModel
      参数:
      pPaths - 新选择
    • addSelectionPath

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

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

      前导路径设置为 paths 中的最后一个元素。

      如果选择模式是 CONTIGUOUS_TREE_SELECTION ,添加新路径会使选择不连续。然后会产生两件事:如果 paths 中的 TreePaths 是连续的,则选择成为这些 TreePaths,否则 TreePaths 不连续并且选择成为 paths 中的第一个 TreePath。

      指定者:
      addSelectionPaths 在接口 TreeSelectionModel
      参数:
      paths - 添加到当前选择的新路径
    • removeSelectionPath

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

      public void removeSelectionPaths(TreePath [] paths)
      从选择中删除路径。如果路径中的任何路径在选择中,则会通知 TreeSelectionListeners。如果 paths 为 null,则此操作无效。
      指定者:
      removeSelectionPaths 在接口 TreeSelectionModel
      参数:
      paths - 从选择中移除的路径
    • getSelectionPath

      public TreePath  getSelectionPath()
      返回选择中的第一条路径。如果当前仅选择了一个项目,这将很有用。
      指定者:
      getSelectionPath 在接口 TreeSelectionModel
      返回:
      选择中的第一条路径
    • getSelectionPaths

      public TreePath [] getSelectionPaths()
      返回选择。
      指定者:
      getSelectionPaths 在接口 TreeSelectionModel
      返回:
      选择
    • getSelectionCount

      public int getSelectionCount()
      返回选择的路径数。
      指定者:
      getSelectionCount 在接口 TreeSelectionModel
      返回:
      选择的路径数
    • isPathSelected

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

      public boolean isSelectionEmpty()
      如果选择当前为空,则返回 true。
      指定者:
      isSelectionEmpty 在接口 TreeSelectionModel
      返回:
      当前选择是否为空
    • clearSelection

      public void clearSelection()
      清空当前选择。如果这表示当前选择发生变化,则会通知选择监听。
      指定者:
      clearSelection 在接口 TreeSelectionModel
    • addTreeSelectionListener

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

      public void removeTreeSelectionListener(TreeSelectionListener  x)
      从每次选定的 TreePath 集更改时通知的监听列表中删除 x。
      指定者:
      removeTreeSelectionListener 在接口 TreeSelectionModel
      参数:
      x - 要删除的监听器
    • getTreeSelectionListeners

      public TreeSelectionListener [] getTreeSelectionListeners()
      返回在此模型上注册的所有树选择监听的数组。
      返回:
      此模型的所有 TreeSelectionListener s 或一个空数组(如果当前没有注册树选择监听器)
      自从:
      1.4
      参见:
    • fireValueChanged

      protected void fireValueChanged(TreeSelectionEvent  e)
      通知为此对象上的树选择事件注册的所有监听。
      参数:
      e - 表征变化的事件
      参见:
    • getListeners

      public <T extends EventListener > T[] getListeners(Class <T> listenerType)
      返回当前在此模型上注册为 FooListener 的所有对象的数组。 FooListener 是使用 addFooListener 方法注册的。

      您可以使用类文字指定 listenerType 参数,例如 FooListener.class 。例如,您可以使用以下代码查询 DefaultTreeSelectionModel m 的树选择监听器:

      TreeSelectionListener[] tsls = (TreeSelectionListener[])(m.getListeners(TreeSelectionListener.class));
      如果不存在这样的监听器,则此方法返回一个空数组。
      类型参数:
      T - 监听器类型
      参数:
      listenerType - 请求的监听器类型
      返回:
      在此组件上注册为 FooListener 的所有对象的数组,如果没有添加此类监听器,则为空数组
      抛出:
      ClassCastException - 如果 listenerType 没有指定实现 java.util.EventListener 的类或接口
      自从:
      1.3
      参见:
    • getSelectionRows

      public int[] getSelectionRows()
      根据行返回选择。从 getSelectionPaths 返回的 TreePath 与此方法之间不一定存在一对一的映射。特别是,如果 TreePath 不可见( RowMapper 为对应于 TreePath 的行返回 -1),则对应的行不包含在返回的数组中。例如,如果选择由两条路径组成,ABA10 行,B 当前不可见,则此方法返回一个包含单个条目 10 的数组。
      指定者:
      getSelectionRows 在接口 TreeSelectionModel
      返回:
      按行选择
    • getMinSelectionRow

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

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

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

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

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

      这将调用 insureRowContinuity 以确保当前选择的 TreePaths 根据选择模式仍然有效。

      指定者:
      resetRowSelection 在接口 TreeSelectionModel
    • getLeadSelectionRow

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

      public TreePath  getLeadSelectionPath()
      返回最后添加的路径。这可能不同于 JTree 维护的 leadSelectionPath 属性。
      指定者:
      getLeadSelectionPath 在接口 TreeSelectionModel
      返回:
      最后添加的路径
    • addPropertyChangeListener

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

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

      指定者:
      addPropertyChangeListener 在接口 TreeSelectionModel
      参数:
      listener - 要添加的 PropertyChangeListener
    • removePropertyChangeListener

      public void removePropertyChangeListener(PropertyChangeListener  listener)
      从监听列表中删除 PropertyChangeListener。这将删除为所有属性注册的 PropertyChangeListener。
      指定者:
      removePropertyChangeListener 在接口 TreeSelectionModel
      参数:
      listener - 要删除的 PropertyChangeListener
    • getPropertyChangeListeners

      public PropertyChangeListener [] getPropertyChangeListeners()
      返回在此 DefaultTreeSelectionModel 上注册的所有属性更改监听器的数组。
      返回:
      此模型的所有 PropertyChangeListener s 或空数组(如果当前未注册属性更改监听器)
      自从:
      1.4
      参见:
    • insureRowContinuity

      protected void insureRowContinuity()
      确保当前选择的 TreePath 对当前选择模式有效。如果选择模式是 CONTIGUOUS_TREE_SELECTION 并且 RowMapper 存在,这将确保所有行都是连续的,也就是说,当排序时所有行都是按顺序排列的,没有间隙。如果所选内容不连续,则所选内容将重置为包含排序后的第一组连续行。

      如果选择模式为 SINGLE_TREE_SELECTION 并且选择了多个 TreePath,则选择将重置为包含当前选择的第一个路径。

    • arePathsContiguous

      protected boolean arePathsContiguous(TreePath [] paths)
      如果路径是连续的,或者此对象没有 RowMapper,则返回 true。
      参数:
      paths - 要检查的路径数组
      返回:
      路径是否连续,或者此对象没有 RowMapper
    • canPathsBeAdded

      protected boolean canPathsBeAdded(TreePath [] paths)
      用于测试是否可以添加一组特定的 TreePath 。如果 paths 为 null(或空),或者此对象没有 RowMapper,或者当前未选择任何内容,或者选择模式为 DISCONTIGUOUS_TREE_SELECTION,或者将路径添加到当前选择仍然会导致一组连续的 TreePath ,这将返回 true .
      参数:
      paths - 要检查的 TreePaths 数组
      返回:
      是否可以添加特定的 TreePaths
    • canPathsBeRemoved

      protected boolean canPathsBeRemoved(TreePath [] paths)
      如果可以在不破坏模型连续性的情况下删除路径,则返回 true。这个比较贵。
      参数:
      paths - 要检查的 TreePath 数组
      返回:
      是否可以在不破坏模型连续性的情况下删除路径
    • notifyPathChange

      @Deprecated protected void notifyPathChange(Vector <?> changedPaths, TreePath  oldLeadSelection)
      已弃用。
      从 JDK 版本 1.7 开始
      通知监听路径发生变化。 changePaths 应该包含 PathPlaceHolder 的实例。
      参数:
      changedPaths - 更改路径的向量
      oldLeadSelection - 旧的选择路径
    • updateLeadIndex

      protected void updateLeadIndex()
      更新 leadIndex 实例变量。
    • insureUniqueness

      protected void insureUniqueness()
      这个方法已经过时了,它的实现现在是一个 noop。它仍然由 setSelectionPaths 和 addSelectionPaths 调用,但只是为了向后兼容。
    • toString

      public String  toString()
      返回显示和标识此对象属性的字符串。
      重写:
      toString 在类 Object
      返回:
      此对象的字符串表示形式
    • clone

      public Object  clone() throws CloneNotSupportedException
      返回具有相同选择的此对象的克隆。此方法不会复制选择监听和属性监听。
      重写:
      clone 在类 Object
      返回:
      此实例的克隆。
      抛出:
      CloneNotSupportedException - 从未被此类的实例抛出
      参见: