java.lang.Object
javax.swing.tree.DefaultTreeModel
- 所有已实现的接口:
-
Serializable,TreeModel
使用TreeNodes的简单树数据模型。有关更多信息和使用DefaultTreeModel的示例,请参阅Java教程中的如何使用树。
警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4版本开始,已将所有JavaBeans的长期存储支持添加到java.beans包中。请参阅XMLEncoder。
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean确定isLeaf方法如何判断节点是否为叶节点。protected EventListenerList监听器。protected TreeNode树的根。 -
Constructor Summary
ConstructorsConstructorDescriptionDefaultTreeModel(TreeNode root) 创建一个任何节点都可以有子节点的树。DefaultTreeModel(TreeNode root, boolean asksAllowsChildren) 创建一个树,指定任何节点是否可以有子节点,或者只有某些节点可以有子节点。 -
Method Summary
Modifier and TypeMethodDescriptionvoid在树更改后发布的TreeModelEvent之后添加一个监听器。boolean告诉如何确定叶节点。protected voidfireTreeNodesChanged(Object source, Object[] path, int[] childIndices, Object[] children) 通知所有已注册对此事件类型感兴趣的监听器。protected voidfireTreeNodesInserted(Object source, Object[] path, int[] childIndices, Object[] children) 通知所有已注册对此事件类型感兴趣的监听器。protected voidfireTreeNodesRemoved(Object source, Object[] path, int[] childIndices, Object[] children) 通知所有已注册对此事件类型感兴趣的监听器。protected voidfireTreeStructureChanged(Object source, Object[] path, int[] childIndices, Object[] children) 通知所有已注册对此事件类型感兴趣的监听器。返回父节点parent在父节点的子节点数组中索引为index的子节点。intgetChildCount(Object parent) 返回父节点parent的子节点数。intgetIndexOfChild(Object parent, Object child) 返回父节点中子节点的索引。<T extends EventListener>
T[]getListeners(Class<T> listenerType) 返回当前在此模型上注册为FooListener的所有对象数组。TreeNode[]getPathToRoot(TreeNode aNode) 从节点构建到根节点的父节点,其中原始节点是返回数组中的最后一个元素。protected TreeNode[]getPathToRoot(TreeNode aNode, int depth) 从节点构建到根节点的父节点,其中原始节点是返回数组中的最后一个元素。getRoot()返回树的根。返回在此模型上注册的所有树模型监听器的数组。voidinsertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index) 在父节点的子节点数组中的位置索引处插入newChild时调用此方法。boolean返回指定节点是否为叶节点。voidnodeChanged(TreeNode node) 在更改节点在树中的表示方式后调用此方法。voidnodesChanged(TreeNode node, int[] childIndices) 在更改由childIndicies标识的子节点在树中的表示方式后调用此方法。voidnodeStructureChanged(TreeNode node) 如果完全更改了节点及其子节点的子节点,则调用此方法。voidnodesWereInserted(TreeNode node, int[] childIndices) 在节点中插入一些TreeNodes后调用此方法。voidnodesWereRemoved(TreeNode node, int[] childIndices, Object[] removedChildren) 从节点中删除一些TreeNodes后调用此方法。voidreload()如果修改了此模型依赖的TreeNode,则调用此方法。void如果修改了此模型依赖的TreeNode,则调用此方法。void从其父节点中移除节点时调用此方法。void使用addTreeModelListener()之前添加的监听器。voidsetAsksAllowsChildren(boolean newValue) 设置是否通过询问getAllowsChildren()或isLeaf()来测试叶节点。void将根设置为root。voidvalueForPathChanged(TreePath path, Object newValue) 设置由路径标识的TreeNode的用户对象,并发布节点更改。
-
Field Details
-
root
树的根。 -
listenerList
监听器。 -
asksAllowsChildren
protected boolean asksAllowsChildren确定isLeaf方法如何判断节点是否为叶节点。如果为true,则节点是叶节点,如果不允许有子节点(即使没有子节点,也不是叶节点)。例如,在文件系统中,这让您区分文件夹节点和文件节点。如果此值为false,则任何没有子节点的节点都是叶节点,任何节点都可以获取子节点。
- 参见:
-
-
Constructor Details
-
DefaultTreeModel
创建一个任何节点都可以有子节点的树。- 参数:
-
root- 树的根节点的TreeNode对象 - 参见:
-
DefaultTreeModel
创建一个树,指定任何节点是否可以有子节点,或者只有某些节点可以有子节点。- 参数:
-
root- 树的根节点的TreeNode对象 -
asksAllowsChildren- 一个布尔值,如果任何节点都可以有子节点,则为false,如果每个节点都被要求查看是否可以有子节点,则为true - 参见:
-
-
Method Details
-
setAsksAllowsChildren
public void setAsksAllowsChildren(boolean newValue) 设置是否通过询问getAllowsChildren()或isLeaf()来测试叶节点。如果newValue为true,则发送getAllowsChildren()消息,否则发送isLeaf()消息。- 参数:
-
newValue- 如果为true,则发送getAllowsChildren()消息,否则发送isLeaf()消息
-
asksAllowsChildren
public boolean asksAllowsChildren()告诉如何确定叶节点。- 返回:
- 如果只有不允许有子节点的节点是叶节点,则为true,如果节点没有子节点(即使允许),则为false
- 参见:
-
setRoot
将根设置为root。如果空的root意味着树不显示任何内容,这是合法的。- 参数:
-
root- 树根的新值
-
getRoot
返回树的根。如果树没有节点,则返回null。 -
getIndexOfChild
返回父节点中子节点的索引。如果父节点或子节点为null,则返回-1。- 指定者:
-
getIndexOfChild在接口TreeModel中 - 参数:
-
parent- 树中的一个节点,从此数据源获取 -
child- 我们感兴趣的节点 - 返回:
-
子节点在父节点中的索引,如果父节点或子节点为
null,则返回-1
-
getChild
返回父节点parent在父节点的子节点数组中索引为index的子节点。必须先从此数据源获取parent节点。如果index是parent的有效索引(即index >= 0 && index < getChildCount(parent)),则不应返回null。 -
getChildCount
返回父节点parent的子节点数。如果节点是叶节点或没有子节点,则返回0。必须先从此数据源获取parent节点。- 指定者:
-
getChildCount在接口TreeModel中 - 参数:
-
parent- 树中的一个节点,从此数据源获取 - 返回:
- 节点parent的子节点数
-
isLeaf
返回指定节点是否为叶节点。测试的方式取决于asksAllowsChildren设置。 -
reload
public void reload()如果修改了此模型依赖的TreeNode,请调用此方法。模型将通知所有监听器模型已更改。 -
valueForPathChanged
设置由路径标识的TreeNode的用户对象,并发布节点更改。如果在TreeModel中使用自定义用户对象,则需要对其进行子类化,并将更改节点的用户对象设置为有意义的内容。- 指定者:
-
valueForPathChanged在接口TreeModel中 - 参数:
-
path- 用户已更改的节点的路径 -
newValue- 来自TreeCellEditor的新值
-
insertNodeInto
调用此方法以在父节点的children中的位置index处插入newChild。然后将调用nodesWereInserted来创建适当的事件。这是添加子节点的首选方式,因为它将创建适当的事件。- 参数:
-
newChild- 要插入的子节点 -
parent- 将添加新节点的节点 -
index- 父节点的children的索引
-
removeNodeFromParent
调用此方法从其父节点中移除节点。这将调用nodesWereRemoved来创建适当的事件。这是删除节点的首选方式,因为它会为您处理事件创建。- 参数:
-
node- 要从其父节点中移除的节点
-
nodeChanged
在更改节点在树中的表示方式后调用此方法。- 参数:
-
node- 已更改的节点
-
reload
如果您修改了此模型依赖的TreeNode,请调用此方法。模型将通知所有侦听器模型在给定节点下面已更改。- 参数:
-
node- 模型已更改的节点下面的节点
-
nodesWereInserted
在将一些TreeNodes插入节点后调用此方法。childIndices应该是新元素的索引,并且必须按升序排序。- 参数:
-
node- 子节点计数已增加的父节点 -
childIndices- 插入的子节点的索引
-
nodesWereRemoved
在从节点中删除一些TreeNodes后调用此方法。childIndices应该是已删除元素的索引,并且必须按升序排序。removedChildren应该是已删除的子对象的数组。- 参数:
-
node- 子节点已被移除的父节点 -
childIndices- 已移除子节点的索引 -
removedChildren- 已移除的子对象的数组
-
nodesChanged
在更改由childIndicies标识的子节点在树中的表示方式后调用此方法。- 参数:
-
node- 已更改的节点 -
childIndices- 已更改子节点的索引
-
nodeStructureChanged
如果您完全更改了节点及其子节点的子节点,请调用此方法。这将发布一个treeStructureChanged事件。- 参数:
-
node- 已更改的节点
-
getPathToRoot
从节点本身开始构建父节点,直到根节点,其中原始节点是返回数组中的最后一个元素。返回数组的长度给出了节点在树中的深度。- 参数:
-
aNode- 要获取路径的TreeNode - 返回:
- 一个TreeNodes数组,给出从根节点到指定节点的路径
-
getPathToRoot
从节点本身开始构建父节点,直到根节点,其中原始节点是返回数组中的最后一个元素。返回数组的长度给出了节点在树中的深度。- 参数:
-
aNode- 要获取路径的TreeNode -
depth- 一个int,表示已经向根节点(在递归调用中)走过的步数,用于确定返回数组的大小 - 返回:
- 一个TreeNodes数组,给出从根节点到指定节点的路径
-
addTreeModelListener
添加一个在树更改后发布的TreeModelEvent的监听器。- 指定者:
-
addTreeModelListener在接口TreeModel中 - 参数:
-
l- 要添加的监听器 - 参见:
-
removeTreeModelListener
移除先前使用addTreeModelListener()添加的监听器。- 指定者:
-
removeTreeModelListener在接口TreeModel中 - 参数:
-
l- 要移除的监听器 - 参见:
-
getTreeModelListeners
返回在此模型上注册的所有树模型监听器的数组。- 返回:
-
所有此模型的
TreeModelListener或如果当前未注册任何树模型监听器,则返回一个空数组 - 自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
返回当前在此模型上注册为FooListener的所有对象的数组。FooListener是使用addFooListener方法注册的。您可以使用类字面量(例如
FooListener.class)指定listenerType参数。例如,您可以使用以下代码查询DefaultTreeModelm的树模型监听器:TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class));
如果不存在此类监听器,则此方法将返回一个空数组。- 类型参数:
-
T- 监听器类型 - 参数:
-
listenerType- 请求的监听器类型 - 返回:
-
一个数组,其中包含在此组件上注册为
FooListener的所有对象,如果尚未添加此类监听器,则返回一个空数组 - 抛出:
-
ClassCastException- 如果listenerType未指定实现java.util.EventListener的类或接口 - 自1.3起:
- 参见:
-