JavaTM Platform
Standard Ed. 6

javax.swing.tree
类 DefaultTreeModel

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

public class DefaultTreeModel
extends Object
implements Serializable, TreeModel

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

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


字段摘要
protected  boolean asksAllowsChildren
          确定 isLeaf 方法如何判断一个节点是否为叶节点。
protected  EventListenerList listenerList
          侦听器。
protected  TreeNode root
          树的根。
 
构造方法摘要
DefaultTreeModel(TreeNode root)
          创建其中任何节点都可以有子节点的树。
DefaultTreeModel(TreeNode root, boolean asksAllowsChildren)
          创建一棵树,指定某个节点是否可以有子节点,或者是否仅某些节点可以有子节点。
 
方法摘要
 void addTreeModelListener(TreeModelListener l)
          为树更改后发布的 TreeModelEvent 添加侦听器。
 boolean asksAllowsChildren()
          告知如何确定叶节点。
protected  void fireTreeNodesChanged(Object source, Object[] path, int[] childIndices, Object[] children)
          通知所有需要此事件类型的通知的已注册侦听器。
protected  void fireTreeNodesInserted(Object source, Object[] path, int[] childIndices, Object[] children)
          通知所有需要此事件类型的通知的已注册侦听器。
protected  void fireTreeNodesRemoved(Object source, Object[] path, int[] childIndices, Object[] children)
          通知所有需要此事件类型的通知的已注册侦听器。
protected  void fireTreeStructureChanged(Object source, Object[] path, int[] childIndices, Object[] children)
          通知所有需要此事件类型的通知的已注册侦听器。
 Object getChild(Object parent, int index)
          返回父节点的子节点数组中索引 index 处的 parent 的子节点。
 int getChildCount(Object parent)
          返回 parent 的子节点数。
 int getIndexOfChild(Object parent, Object child)
          返回父节点中子节点的索引。
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
          返回当前已在此模型上注册为 FooListener 的所有对象组成的数组。
 TreeNode[] getPathToRoot(TreeNode aNode)
          向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。
protected  TreeNode[] getPathToRoot(TreeNode aNode, int depth)
          向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。
 Object getRoot()
          返回树的根。
 TreeModelListener[] getTreeModelListeners()
          返回在此模型上注册的所有树模型侦听器组成的数组。
 void insertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index)
          对它进行调用,以便在父节点的子节点中的 index 位置插入 newChild。
 boolean isLeaf(Object node)
          返回指定的节点是否为叶节点。
 void nodeChanged(TreeNode node)
          更改节点在树中的表示方式之后,调用此方法。
 void nodesChanged(TreeNode node, int[] childIndices)
          更改由 childIndicies 标识的子对象在树中的表示方式之后,调用此方法。
 void nodeStructureChanged(TreeNode node)
          如果完全更改了节点的子节点、子节点的子节点、依此类推,则调用此方法。
 void nodesWereInserted(TreeNode node, int[] childIndices)
          将某些 TreeNodes 插入节点之后,调用此方法。
 void nodesWereRemoved(TreeNode node, int[] childIndices, Object[] removedChildren)
          从节点移除一些 TreeNodes 之后,调用此方法。
 void reload()
          如果已修改此模型依赖的 TreeNode,则调用此方法。
 void reload(TreeNode node)
          如果已修改此模型依赖的 TreeNode,则调用此方法。
 void removeNodeFromParent(MutableTreeNode node)
          通知它从其父节点中移除节点。
 void removeTreeModelListener(TreeModelListener l)
          移除以前使用 addTreeModelListener() 添加的侦听器。
 void setAsksAllowsChildren(boolean newValue)
          通过向 TreeNodes 询问 getAllowsChildren() 或 isLeaf(),设置是否测试无叶性。
 void setRoot(TreeNode root)
          将根设置为 root
 void valueForPathChanged(TreePath path, Object newValue)
          此方法设置由路径标识的 TreeNode 的用户对象,并发送更改的节点。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

root

protected TreeNode root
树的根。


listenerList

protected EventListenerList listenerList
侦听器。


asksAllowsChildren

protected boolean asksAllowsChildren
确定 isLeaf 方法如何判断一个节点是否为叶节点。如果为 true,并且节点不允许有子节点,则该节点是叶节点。(如果它允许有子节点,则它不是叶节点,即使不存在任何子节点也是这样。)例如,让您区分文件系统中的文件夹 节点和文件 节点。

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

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

DefaultTreeModel

public DefaultTreeModel(TreeNode root)
创建其中任何节点都可以有子节点的树。

参数:
root - 作为树的根的 TreeNode 对象
另请参见:
DefaultTreeModel(TreeNode, 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()。


asksAllowsChildren

public boolean asksAllowsChildren()
告知如何确定叶节点。

返回:
如果只有不允许有子节点的节点是叶节点,则返回 true,如果没有子节点的节点(即使允许)是叶节点,则返回 false
另请参见:
asksAllowsChildren

setRoot

public void setRoot(TreeNode root)
将根设置为 rootroot 为 null 暗示树不显示任何内容,并且是合法的。


getRoot

public Object getRoot()
返回树的根。仅当树没有节点时,返回 null。

指定者:
接口 TreeModel 中的 getRoot
返回:
树的根

getIndexOfChild

public int getIndexOfChild(Object parent,
                           Object child)
返回父节点中子节点的索引。如果父节点或子节点为 null,则返回 -1。

指定者:
接口 TreeModel 中的 getIndexOfChild
参数:
parent - 从此数据源获取的树中的节点
child - 用户需要的节点
返回:
父节点中子节点的索引,如果父节点或子节点为 null,则返回 -1

getChild

public Object getChild(Object parent,
                       int index)
返回父节点的子节点数组中索引 index 处的 parent 的子节点。parent 必须是以前从此数据源获取的节点。如果 indexparent 的一个有效索引(即:index >= 0 && index < getChildCount(parent)),则不应返回 null。

指定者:
接口 TreeModel 中的 getChild
参数:
parent - 从此数据源获取的树中的节点
返回:
索引 index 位置的 parent 的子节点

getChildCount

public int getChildCount(Object parent)
返回 parent 的子节点数。如果该节点是叶节点,或者它没有子节点,则返回 0。parent 必须是以前从此数据源获取的节点。

指定者:
接口 TreeModel 中的 getChildCount
参数:
parent - 从此数据源获取的树中的节点
返回:
节点 parent 的子节点数

isLeaf

public boolean isLeaf(Object node)
返回指定的节点是否为叶节点。执行测试的方法取决于 askAllowsChildren 设置。

指定者:
接口 TreeModel 中的 isLeaf
参数:
node - 要检查的节点
返回:
如果该节点是一个叶节点,则返回 true
另请参见:
asksAllowsChildren, TreeModel.isLeaf(java.lang.Object)

reload

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


valueForPathChanged

public void valueForPathChanged(TreePath path,
                                Object newValue)
此方法设置由路径标识的 TreeNode 的用户对象,并发送更改的节点。如果使用 TreeModel 中的自定义用户对象,您将需要为该对象创建子类,并将更改的节点的用户对象设置为有意义的内容。

指定者:
接口 TreeModel 中的 valueForPathChanged
参数:
path - 用户已更改的节点的路径
newValue - TreeCellEditor 的新值

insertNodeInto

public void insertNodeInto(MutableTreeNode newChild,
                           MutableTreeNode parent,
                           int index)
对它进行调用,以便在父节点的子节点中的 index 位置插入 newChild。然后,通知 nodesWereInserted 创建适当的事件。这是添加子节点的首选方法,因为它将创建适当的事件。


removeNodeFromParent

public void removeNodeFromParent(MutableTreeNode node)
通知它从其父节点中移除节点。这将通知 nodesWereRemoved 创建适当事件。这是移除节点的首选方法,因为它可以为您处理事件的创建。


nodeChanged

public void nodeChanged(TreeNode node)
更改节点在树中的表示方式之后,调用此方法。


reload

public void reload(TreeNode node)
如果已修改此模型依赖的 TreeNode,则调用此方法。该模型将通知其所有侦听器给定节点下面的模型已更改。

参数:
node - 其下面的模型已更改的节点

nodesWereInserted

public void nodesWereInserted(TreeNode node,
                              int[] childIndices)
将某些 TreeNodes 插入节点之后,调用此方法。子索引应是新元素的索引,并且必须按升序排序。


nodesWereRemoved

public void nodesWereRemoved(TreeNode node,
                             int[] childIndices,
                             Object[] removedChildren)
从节点移除一些 TreeNodes 之后,调用此方法。childIndices 应是移除元素的索引,并且必须按升序排序。removedChildren 应是移除的子对象的数组。


nodesChanged

public void nodesChanged(TreeNode node,
                         int[] childIndices)
更改由 childIndicies 标识的子对象在树中的表示方式之后,调用此方法。


nodeStructureChanged

public void nodeStructureChanged(TreeNode node)
如果完全更改了节点的子节点、子节点的子节点、依此类推,则调用此方法。调用此方法将发布 treeStructureChanged 事件。


getPathToRoot

public TreeNode[] getPathToRoot(TreeNode aNode)
向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。返回的数组长度给出了树中节点的深度。

参数:
aNode - 获取其路径的 TreeNode

getPathToRoot

protected TreeNode[] getPathToRoot(TreeNode aNode,
                                   int depth)
向上构建节点的父节点一直到根节点(包括根节点),其中原始节点是返回数组中的最后一个元素。返回的数组长度给出了树中节点的深度。

参数:
aNode - 要获取其路径的 TreeNode
depth - 提供对根(通过递归调用)执行的步骤数的 int,用于确定返回的数组的大小
返回:
提供从根到指定节点的路径的 TreeNodes 数组。

addTreeModelListener

public void addTreeModelListener(TreeModelListener l)
为树更改后发布的 TreeModelEvent 添加侦听器。

指定者:
接口 TreeModel 中的 addTreeModelListener
参数:
l - 要添加的侦听器
另请参见:
removeTreeModelListener(javax.swing.event.TreeModelListener)

removeTreeModelListener

public void removeTreeModelListener(TreeModelListener l)
移除以前使用 addTreeModelListener() 添加的侦听器。

指定者:
接口 TreeModel 中的 removeTreeModelListener
参数:
l - 要移除的侦听器
另请参见:
addTreeModelListener(javax.swing.event.TreeModelListener)

getTreeModelListeners

public TreeModelListener[] getTreeModelListeners()
返回在此模型上注册的所有树模型侦听器组成的数组。

返回:
此模型的所有 TreeModelListener,如果当前没有注册任何树模型侦听器,则返回一个空数组
从以下版本开始:
1.4
另请参见:
addTreeModelListener(javax.swing.event.TreeModelListener), removeTreeModelListener(javax.swing.event.TreeModelListener)

fireTreeNodesChanged

protected void fireTreeNodesChanged(Object source,
                                    Object[] path,
                                    int[] childIndices,
                                    Object[] children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。

参数:
source - 更改的节点
path - 到根节点的路径
childIndices - 更改的元素的索引
children - 更改的元素
另请参见:
EventListenerList

fireTreeNodesInserted

protected void fireTreeNodesInserted(Object source,
                                     Object[] path,
                                     int[] childIndices,
                                     Object[] children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。

参数:
source - 插入新元素的节点
path - 到根节点的路径
childIndices - 新元素的索引
children - 新元素
另请参见:
EventListenerList

fireTreeNodesRemoved

protected void fireTreeNodesRemoved(Object source,
                                    Object[] path,
                                    int[] childIndices,
                                    Object[] children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。

参数:
source - 移除元素的节点
path - 到根节点的路径
childIndices - 移除元素的索引
children - 移除的元素
另请参见:
EventListenerList

fireTreeStructureChanged

protected void fireTreeStructureChanged(Object source,
                                        Object[] path,
                                        int[] childIndices,
                                        Object[] children)
通知所有需要此事件类型的通知的已注册侦听器。使用传入此触发方法的参数延后创建事件实例。

参数:
source - 从该节点开始树模型已更改的节点
path - 到根节点的路径
childIndices - 受影响的元素的索引
children - 受影响的元素
另请参见:
EventListenerList

getListeners

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

可以使用 class 字面值来指定 listenerType 参数,如 FooListener.class。例如,可以使用下面的代码查询 DefaultTreeModel m 的树模型侦听器:

TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class));
如果不存在这样的侦听器,则此方法将返回一个空数组。

参数:
listenerType - 所请求侦听器的类型;该参数应该指定一个从 java.util.EventListener 继承的接口
返回:
在此容器上注册为 FooListener 的所有对象的数组,如果没有添加这样的侦听器,则返回一个空数组
抛出:
ClassCastException - 如果 listenerType 没有指定实现 java.util.EventListener 的类或接口
从以下版本开始:
1.3
另请参见:
getTreeModelListeners()

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策