模块  java.desktop
软件包  javax.swing.tree

Class DefaultTreeModel

  • 实现的所有接口
    SerializableTreeModel

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

    警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans软件包中添加了对所有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 - 作为树的根的TreeNode对象
        asksAllowsChildren - 布尔值,如果任何节点可以有子节点,则为false;如果要求每个节点查看是否可以有子节点,则为true
        另请参见:
        asksAllowsChildren
    • 方法详细信息

      • setAsksAllowsChildren

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

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

        public void setRoot​(TreeNode root)
        将根设置为root null 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的索引,如果父项或子项为 null
      • getChild

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

        public int getChildCount​(Object parent)
        返回父项的子项数。 如果节点是叶子或者没有子节点,则返回0。 parent必须是先前从此数据源获取的节点。
        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)
        调用此方法在父项子项中的位置索引处插入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)
        从节点中删除了一些TreeNodes后调用此方法。 childIndices应该是已删除元素的索引,并且必须按升序排序。 并且removedChildren应该是已删除的子对象的数组。
        参数
        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​(<T> listenerType)
        返回此模型上当前注册为FooListener的所有对象的数组。 FooListener s使用addFooListener方法注册。

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

          TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class)); 
        如果不存在此类侦听器,则此方法返回空数组。
        参数类型
        T - 侦听器类型
        参数
        listenerType - 请求的侦听器类型
        结果
        此组件上注册为 FooListener的所有对象的数组,如果未添加此类侦听器,则为空数组
        异常
        ClassCastException - 如果 listenerType未指定实现 java.util.EventListener的类或接口
        从以下版本开始:
        1.3
        另请参见:
        getTreeModelListeners()