java.lang.Object
javax.swing.tree.DefaultTreeModel
- 所有已实现的接口:
-
Serializable
,TreeModel
使用TreeNodes的简单树数据模型。有关更多信息和使用DefaultTreeModel的示例,请参阅Java教程中的如何使用树。
警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4版本开始,已将所有JavaBeans的长期存储支持添加到java.beans
包中。请参阅XMLEncoder
。
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
确定isLeaf
方法如何判断节点是否为叶节点。protected EventListenerList
监听器。protected TreeNode
树的根。 -
Constructor Summary
ConstructorDescriptionDefaultTreeModel
(TreeNode root) 创建一个任何节点都可以有子节点的树。DefaultTreeModel
(TreeNode root, boolean asksAllowsChildren) 创建一个树,指定任何节点是否可以有子节点,或者只有某些节点可以有子节点。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
在树更改后发布的TreeModelEvent之后添加一个监听器。boolean
告诉如何确定叶节点。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) 通知所有已注册对此事件类型感兴趣的监听器。返回父节点parent在父节点的子节点数组中索引为index的子节点。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) 从节点构建到根节点的父节点,其中原始节点是返回数组中的最后一个元素。getRoot()
返回树的根。返回在此模型上注册的所有树模型监听器的数组。void
insertNodeInto
(MutableTreeNode newChild, MutableTreeNode parent, int index) 在父节点的子节点数组中的位置索引处插入newChild时调用此方法。boolean
返回指定节点是否为叶节点。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
如果修改了此模型依赖的TreeNode
,则调用此方法。void
从其父节点中移除节点时调用此方法。void
使用addTreeModelListener()之前添加的监听器。void
setAsksAllowsChildren
(boolean newValue) 设置是否通过询问getAllowsChildren()或isLeaf()来测试叶节点。void
将根设置为root
。void
valueForPathChanged
(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
参数。例如,您可以使用以下代码查询DefaultTreeModel
m
的树模型监听器:TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class));
如果不存在此类监听器,则此方法将返回一个空数组。- 类型参数:
-
T
- 监听器类型 - 参数:
-
listenerType
- 请求的监听器类型 - 返回:
-
一个数组,其中包含在此组件上注册为
FooListener
的所有对象,如果尚未添加此类监听器,则返回一个空数组 - 抛出:
-
ClassCastException
- 如果listenerType
未指定实现java.util.EventListener
的类或接口 - 自1.3起:
- 参见:
-