Module  java.desktop
软件包  javax.swing.tree

Class DefaultTreeModel

  • All Implemented Interfaces:
    SerializableTreeModel


    public class DefaultTreeModel
    extends Object
    implements Serializable, TreeModel
    一个使用TreeNodes的简单树数据模型。 有关使用DefaultTreeModel的更多信息和示例,请参阅Java教程中的 How to Use Trees

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

    另请参见:
    Serialized Form
    • 字段详细信息

      • root

        protected TreeNode root
        树的根。
      • asksAllowsChildren

        protected boolean asksAllowsChildren
        确定isLeaf方法如何确定节点是否为叶节点。 如果为true,则如果节点不允许孩子,则节点是叶节点。 (如果它允许孩子,它不是一个叶子节点,即使没有孩子)。例如,它可以区分文件系统中的文件节点和文件节点。

        如果该值为false,则任何没有子节点的节点都是叶节点,任何节点都可以获取子节点。

        另请参见:
        TreeNode.getAllowsChildren()TreeModel.isLeaf(java.lang.Object)setAsksAllowsChildren(boolean)
    • 构造方法详细信息

      • DefaultTreeModel

        public DefaultTreeModel​(TreeNode root,
                                boolean asksAllowsChildren)
        创建一个树,指定任何节点是否可以有子节点,或者只有某些节点可以有子节点。
        参数
        root - 作为 root的TreeNode对象
        asksAllowsChildren - 一个布尔值,如果任何节点可以有子节点,则为false,如果每个节点被询问是否可以拥有子节点,则为true
        另请参见:
        asksAllowsChildren
    • 方法详细信息

      • setAsksAllowsChildren

        public void setAsksAllowsChildren​(boolean newValue)
        设置是否通过向TreeNodes请求getAllowsChildren()或isLeaf()来测试叶片性。 如果newvalue为true,则getAllowsChildren()将被消息,否则isLeaf()被消息。
        参数
        newValue - 如果为true,getAllowsChildren()被消息,否则isLeaf()被消息
      • asksAllowsChildren

        public boolean asksAllowsChildren​()
        告诉叶节点如何确定。
        结果
        如果只有不允许子节点的节点是叶节点,则为真,如果没有子节点的节点(即使是允许的话)也是假叶节点
        另请参见:
        asksAllowsChildren
      • setRoot

        public void setRoot​(TreeNode root)
        将根设置为root 一个空的root暗示树是什么都不显示,是合法的。
        参数
        root - 树根的新值
      • getRoot

        public Object getRoot​()
        返回树的根。 只有当树没有节点时才返回null。
        Specified by:
        getRoot接口 TreeModel
        结果
        树的根
      • getIndexOfChild

        public int getIndexOfChild​(Object parent,
                                   Object child)
        返回父项中的子项的索引。 如果父或子是null ,返回-1。
        Specified by:
        getIndexOfChild在接口 TreeModel
        参数
        parent - 从该数据源获取的树中的注释
        child - 我们感兴趣的节点
        结果
        父母中的孩子的索引,如果父或孩子的父母是 null
      • getChild

        public Object getChild​(Object parent,
                               int index)
        返回父节点的子数组中的索引的索引孩子。 父项必须是先前从此数据源获取的节点。 如果indexparent的有效索引(即index > = 0 && index <getChildCount( parent )),则不应返回null。
        Specified by:
        getChild在接口 TreeModel
        参数
        parent - 从该数据源获取的树中的一个节点
        index - 要返回的孩子的索引
        结果
        父母的索引 索引小孩
      • getChildCount

        public int getChildCount​(Object parent)
        返回父节点的子节点数。 如果节点是叶子或没有子节点,则返回0。 父项必须是先前从此数据源获取的节点。
        Specified by:
        getChildCount在接口 TreeModel
        参数
        parent - 从该数据源获取的树中的一个节点
        结果
        节点 节点的 节点数
      • reload

        public void reload​()
        如果您修改了此型号所依赖的TreeNode则调用此方法。 该模型将通知所有的监听器模型已经改变。
      • valueForPathChanged

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

        public void insertNodeInto​(MutableTreeNode newChild,
                                   MutableTreeNode parent,
                                   int index)
        调用此选项将parentChild插入到父项子节点的位置索引中。 这将会消息节点被插入以创建适当的事件。 这是添加子项的首选方法,因为它将创建适当的事件。
        参数
        newChild - 要插入的子节点
        parent - 将添加子节点新节点的节点
        index - 父母子女的索引
      • removeNodeFromParent

        public void removeNodeFromParent​(MutableTreeNode node)
        消息此消息从其父节点删除节点。 这将消息节点被删除以创建适当的事件。 这是在为您处理事件创建时删除节点的首选方法。
        参数
        node - 要从其删除的节点
      • nodeChanged

        public void nodeChanged​(TreeNode node)
        在更改树中如何表示节点之后调用此方法。
        参数
        node - 已更改的节点
      • reload

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

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

        public void nodesWereRemoved​(TreeNode node,
                                     int[] childIndices,
                                     Object[] removedChildren)
        从节点中删除一些TreeNodes后,调用此方法。 childIndices应该是已删除元素的索引,并且必须按升序排序。 而removeChildren应该是删除的子对象的数组。
        参数
        node - 删除了 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数组,提供从根到指定节点的路径
      • 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
        另请参见:
        getTreeModelListeners()