模块 java.desktop

类 DefaultTreeModel

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

public class DefaultTreeModel extends Object implements Serializable , TreeModel
使用 TreeNodes 的简单树数据模型。有关使用 DefaultTreeModel 的更多信息和示例,请参阅 The Java Tutorial. 中的 如何使用树木

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

  • 字段详细信息

    • root

      protected TreeNode  root
      树的根。
    • listenerList

      protected EventListenerList  listenerList
      听众。
    • asksAllowsChildren

      protected boolean asksAllowsChildren
      确定 isLeaf 方法如何确定节点是否为叶节点。如果为真,则如果节点不允许子节点,则该节点为叶节点。 (如果它允许孩子,它就不是叶节点,即使没有孩子存在。)这让你区分文件夹节点和file例如,文件系统中的节点。

      如果此值为假,则任何没有子节点的节点都是叶节点,并且任何节点都可以获取子节点。

      参见:
  • 构造方法详细信息

    • DefaultTreeModel

      @ConstructorProperties ("root") public DefaultTreeModel(TreeNode  root)
      创建一棵树,其中任何节点都可以有子节点。
      参数:
      root - 作为树根的 TreeNode 对象
      参见:
    • DefaultTreeModel

      public DefaultTreeModel(TreeNode  root, boolean asksAllowsChildren)
      创建一个树,指定是否任何节点都可以有子节点,或者是否只有某些节点可以有子节点。
      参数:
      root - 作为树根的 TreeNode 对象
      asksAllowsChildren - boolean,如果任何节点都可以有子节点则为 false,如果要求每个节点查看它是否可以有子节点则为 true
      参见:
  • 方法详情

    • setAsksAllowsChildren

      public void setAsksAllowsChildren(boolean newValue)
      设置是否通过向 TreeNodes 询问 getAllowsChildren() 或 isLeaf() 来测试叶度。如果 newvalue 为真,则向 getAllowsChildren() 发送消息,否则向 isLeaf() 发送消息。
      参数:
      newValue - 如果为真,则向 getAllowsChildren() 发送消息,否则向 isLeaf() 发送消息
    • asksAllowsChildren

      public boolean asksAllowsChildren()
      说明如何确定叶节点。
      返回:
      如果只有不允许子节点的节点是叶节点,则为 true;如果没有子节点(即使允许)的节点是叶节点,则为 false
      参见:
    • setRoot

      public void setRoot(TreeNode  root)
      将根设置为 root 。 null root 表示该树不显示任何内容,并且是合法的。
      参数:
      root - 树根的新值
    • getRoot

      public Object  getRoot()
      返回树的根。仅当树没有节点时才返回 null。
      指定者:
      getRoot 在接口 TreeModel
      返回:
      树根
    • getIndexOfChild

      public int getIndexOfChild(Object  parent, Object  child)
      返回父项中子项的索引。如果父母或孩子是 null ,则返回 -1。
      指定者:
      getIndexOfChild 在接口 TreeModel
      参数:
      parent - 树中的注释,从此数据源获得
      child - 我们感兴趣的节点
      返回:
      父项中子项的索引,如果父项或子项是 null,则为 -1
    • getChild

      public Object  getChild(Object  parent, int index)
      返回的子级parent在指数指数在父级的子级数组中。parent必须是先前从此数据源获得的节点。如果指数是一个有效索引parent(那是指数 >= 0 && 指数< getChildCount(parent)).
      指定者:
      getChild 在接口 TreeModel
      参数:
      parent - 树中的一个节点,从此数据源获得
      index - 要返回的孩子的索引
      返回:
      的子级parent在指数指数
    • getChildCount

      public int getChildCount(Object  parent)
      返回的子级的数量parent.如果节点是叶节点或没有子节点,则返回 0。parent必须是先前从此数据源获得的节点。
      指定者:
      getChildCount 在接口 TreeModel
      参数:
      parent - 树中的一个节点,从此数据源获得
      返回:
      节点的子节点数parent
    • isLeaf

      public boolean isLeaf(Object  node)
      返回指定节点是否为叶节点。执行测试的方式取决于 asksAllowsChildren 设置。
      指定者:
      isLeaf 在接口 TreeModel
      参数:
      node - 要检查的节点
      返回:
      如果节点是叶节点则为真
      参见:
    • reload

      public void reload()
      如果您修改了此模型所依赖的 TreeNode ,请调用此方法。该模型将通知其所有监听器模型已更改。
    • valueForPathChanged

      public void valueForPathChanged(TreePath  path, Object  newValue)
      这将设置由路径标识的 TreeNode 的用户对象,并发布一个已更改的节点。如果您在 TreeModel 中使用自定义用户对象,您将需要对其进行子类化并将已更改节点的用户对象设置为有意义的内容。
      指定者:
      valueForPathChanged 在接口 TreeModel
      参数:
      path - 用户更改的节点路径
      newValue - 来自 TreeCellEditor 的新值
    • insertNodeInto

      public void insertNodeInto(MutableTreeNode  newChild, MutableTreeNode  parent, int index)
      调用它以在父级子级的位置索引处插入 newChild。然后这将消息 nodesWereInserted 以创建适当的事件。这是添加子项的首选方式,因为它将创建适当的事件。
      参数:
      newChild - 要插入的子节点
      parent - 子节点将被添加到的节点
      index - 父母子女的索引
    • removeNodeFromParent

      public void removeNodeFromParent(MutableTreeNode  node)
      发送此消息以从其父节点中删除节点。这将消息 nodesWereRemoved 以创建适当的事件。这是移除节点的首选方式,因为它会为您处理事件创建。
      参数:
      node - 要从其父节点中删除的节点
    • nodeChanged

      public void nodeChanged(TreeNode  node)
      在更改节点在树中的表示方式后调用此方法。
      参数:
      node - 改变的节点
    • reload

      public void reload(TreeNode  node)
      如果您修改了此模型所依赖的 TreeNode ,请调用此方法。该模型将通知其所有监听器模型已在给定节点下更改。
      参数:
      node - 模型已更改的节点
    • nodesWereInserted

      public void nodesWereInserted(TreeNode  node, int[] childIndices)
      在将一些 TreeNodes 插入节点后调用此方法。 childIndices 应该是新元素的索引,并且必须按升序排序。
      参数:
      node - 子节点计数的父节点已递增
      childIndices - 插入的孩子的索引
    • nodesWereRemoved

      public void nodesWereRemoved(TreeNode  node, int[] childIndices, Object [] removedChildren)
      从节点中删除一些 TreeNode 后调用此方法。 childIndices 应该是被移除元素的索引,并且必须按升序排序。而 removedChildren 应该是被移除的子对象的数组。
      参数:
      node - 子节点被移除的父节点
      childIndices - 删除的孩子的索引
      removedChildren - 已删除的子对象数组
    • nodesChanged

      public void nodesChanged(TreeNode  node, int[] childIndices)
      在更改了由 childIndicies 标识的子级在树中的表示方式后调用此方法。
      参数:
      node - 更改节点
      childIndices - 已更改子项的索引
    • nodeStructureChanged

      public void nodeStructureChanged(TreeNode  node)
      如果您完全更改了节点的子节点及其子节点的子节点,请调用此方法...这将发布一个 treeStructureChanged 事件。
      参数:
      node - 更改节点
    • getPathToRoot

      public TreeNode [] getPathToRoot(TreeNode  aNode)
      构建节点的父节点,直至并包括根节点,其中原始节点是返回数组中的最后一个元素。返回数组的长度给出节点在树中的深度。
      参数:
      aNode - 获取路径的 TreeNode
      返回:
      一个 TreeNodes 数组,给出从根开始的路径
    • getPathToRoot

      protected TreeNode [] getPathToRoot(TreeNode  aNode, int depth)
      构建节点的父节点,直至并包括根节点,其中原始节点是返回数组中的最后一个元素。返回数组的长度给出节点在树中的深度。
      参数:
      aNode - 获取路径的 TreeNode
      depth - 一个 int,给出已向根执行的步数(在递归调用中),用于调整返回数组的大小
      返回:
      给出从根到指定节点的路径的 TreeNodes 数组
    • addTreeModelListener

      public void addTreeModelListener(TreeModelListener  l)
      为树更改后发布的 TreeModelEvent 添加监听。
      指定者:
      addTreeModelListener 在接口 TreeModel
      参数:
      l - 要添加的监听器
      参见:
    • removeTreeModelListener

      public void removeTreeModelListener(TreeModelListener  l)
      删除以前添加的监听addTreeModelListener().
      指定者:
      removeTreeModelListener 在接口 TreeModel
      参数:
      l - 要删除的监听器
      参见:
    • getTreeModelListeners

      public TreeModelListener [] getTreeModelListeners()
      返回在此模型上注册的所有树模型监听的数组。
      返回:
      此模型的所有 TreeModelListener s 或空数组(如果当前没有注册树模型监听器)
      自从:
      1.4
      参见:
    • fireTreeNodesChanged

      protected void fireTreeNodesChanged(Object  source, Object [] path, int[] childIndices, Object [] children)
      通知所有已注册对此事件类型的通知感兴趣的监听。事件实例是使用传递给 fire 方法的参数延迟创建的。
      参数:
      source - TreeModelEvent 的来源;通常this
      path - 更改的节点的父节点的路径;使用 null 来识别根已经改变
      childIndices - 已更改元素的索引
      children - 改变的元素
    • fireTreeNodesInserted

      protected void fireTreeNodesInserted(Object  source, Object [] path, int[] childIndices, Object [] children)
      通知所有已注册对此事件类型的通知感兴趣的监听。事件实例是使用传递给 fire 方法的参数延迟创建的。
      参数:
      source - TreeModelEvent 的来源;通常this
      path - 添加节点的父节点的路径
      childIndices - 新元素的索引
      children - 新元素
    • fireTreeNodesRemoved

      protected void fireTreeNodesRemoved(Object  source, Object [] path, int[] childIndices, Object [] children)
      通知所有已注册对此事件类型的通知感兴趣的监听。事件实例是使用传递给 fire 方法的参数延迟创建的。
      参数:
      source - TreeModelEvent 的来源;通常this
      path - 从中删除节点的父节点的路径
      childIndices - 删除元素的索引
      children - 删除的元素
    • fireTreeStructureChanged

      protected void fireTreeStructureChanged(Object  source, Object [] path, int[] childIndices, Object [] children)
      通知所有已注册对此事件类型的通知感兴趣的监听。事件实例是使用传递给 fire 方法的参数延迟创建的。
      参数:
      source - TreeModelEvent 的来源;通常this
      path - 已更改结构的父级路径;使用 null 来识别根已经改变
      childIndices - 受影响元素的索引
      children - 受影响的元素
    • getListeners

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

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

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