Module java.desktop
Package javax.swing.tree

Class TreePath

java.lang.Object
javax.swing.tree.TreePath
所有已实现的接口:
Serializable

public class TreePath extends Object implements Serializable
TreePath表示一个对象数组,用于唯一标识树中节点的路径。数组的元素按照根节点作为数组的第一个元素进行排序。例如,文件系统上的文件根据父目录数组和文件名进行唯一标识。路径/tmp/foo/bar可以被表示为一个TreePath,如new TreePath(new Object[] {"tmp", "foo", "bar"})

TreePathJTree及相关类广泛使用。例如,JTree将选择表示为TreePath数组。当与JTree一起使用时,路径的元素是从TreeModel返回的对象。当JTreeDefaultTreeModel配对时,路径的元素是TreeNode。以下示例说明了如何从JTree的选择中提取用户对象:

   DefaultMutableTreeNode root = ...;
   DefaultTreeModel model = new DefaultTreeModel(root);
   JTree tree = new JTree(model);
   ...
   TreePath selectedPath = tree.getSelectionPath();
   DefaultMutableTreeNode selectedNode =
       ((DefaultMutableTreeNode)selectedPath.getLastPathComponent());
   Object myObject= selectedNode.getUserObject();
 
子类通常只需要重写getLastPathComponentgetParentPath。由于JTree在内部在各个点创建TreePath,因此通常不适合对TreePath进行子类化并与JTree一起使用。

虽然TreePath是可序列化的,但如果路径的任何元素不可序列化,则会抛出NotSerializableException

有关更多信息和使用树路径的示例,请参阅The Java Tutorial中的How to Use Trees

警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到java.beans包中。请参阅XMLEncoder

  • Constructor Details

    • TreePath

      @ConstructorProperties("path") public TreePath(Object[] path)
      从数组创建TreePath。数组唯一标识到节点的路径。
      参数:
      path - 表示节点路径的对象数组
      抛出:
      IllegalArgumentException - 如果pathnull、空或包含null
    • TreePath

      public TreePath(Object lastPathComponent)
      创建包含单个元素的TreePath。用于构造标识根节点的TreePath
      参数:
      lastPathComponent - 根节点
      抛出:
      IllegalArgumentException - 如果lastPathComponentnull
      参见:
    • TreePath

      protected TreePath(TreePath parent, Object lastPathComponent)
      使用指定的父级和元素创建TreePath
      参数:
      parent - 父级路径,或null表示根节点
      lastPathComponent - 最后的路径元素
      抛出:
      IllegalArgumentException - 如果lastPathComponentnull
    • TreePath

      protected TreePath(Object[] path, int length)
      从数组创建TreePath。返回的TreePath表示数组中从0length - 1的元素。

      此构造函数在内部使用,通常在子类外部不太有用。

      参数:
      path - 创建TreePath的数组
      length - 用于创建TreePathpath中元素的数量
      抛出:
      NullPointerException - 如果pathnull
      ArrayIndexOutOfBoundsException - 如果length - 1超出数组范围
      IllegalArgumentException - 如果0length - 1中的任何元素为null
    • TreePath

      protected TreePath()
      创建一个空的TreePath。为以不同方式表示路径的子类提供。使用此构造函数的子类必须重写getLastPathComponentgetParentPath
  • Method Details

    • getPath

      public Object[] getPath()
      返回此TreePath的元素的有序数组。第一个元素是根节点。
      返回:
      TreePath中元素的数组
    • getLastPathComponent

      public Object getLastPathComponent()
      返回此路径的最后一个元素。
      返回:
      路径中的最后一个元素
    • getPathCount

      public int getPathCount()
      返回路径中的元素数。
      返回:
      路径中的元素数
    • getPathComponent

      public Object getPathComponent(int index)
      返回指定索引处的路径元素。
      参数:
      index - 请求的元素的索引
      返回:
      指定索引处的元素
      抛出:
      IllegalArgumentException - 如果索引超出此路径的范围
    • equals

      public boolean equals(Object o)
      将此TreePath与指定对象进行比较。如果o是具有完全相同元素的TreePath(通过对路径的每个元素使用equals来确定)则返回true
      覆盖:
      equals 在类 Object
      参数:
      o - 要比较的对象
      返回:
      如果此对象与obj参数相同,则返回true;否则返回false
      参见:
    • hashCode

      public int hashCode()
      返回此TreePath的哈希码。TreePath的哈希码是路径中最后一个元素的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      对象的哈希码
      参见:
    • isDescendant

      public boolean isDescendant(TreePath aTreePath)
      如果aTreePath是此TreePath的后代,则返回true。如果P1包含构成P2路径的所有元素,则TreePath P1TreePath P2的后代。例如,如果此对象具有路径[a, b],而aTreePath具有路径[a, b, c],则aTreePath是此对象的后代。但是,如果aTreePath具有路径[a],则它不是此对象的后代。根据此定义,TreePath始终被视为其自身的后代。也就是说,aTreePath.isDescendant(aTreePath)返回true
      参数:
      aTreePath - 要检查的TreePath
      返回:
      如果aTreePath是此路径的后代,则返回true
    • pathByAddingChild

      public TreePath pathByAddingChild(Object child)
      返回包含此路径的所有元素以及child的新路径。child是新创建的TreePath的最后一个元素。
      参数:
      child - 要添加的路径元素
      返回值:
      包含此路径所有元素以及child的新路径
      抛出:
      NullPointerException - 如果childnull
    • getParentPath

      public TreePath getParentPath()
      返回父节点的TreePath。返回null表示这是根节点。
      返回值:
      父路径
    • toString

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