- java.lang.Object
-
- javax.swing.tree.DefaultTreeModel
-
- All Implemented Interfaces:
-
Serializable
,TreeModel
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
-
-
Field Summary
Fields Modifier and Type Field 描述 protected boolean
asksAllowsChildren
确定isLeaf
方法如果一个节点是一个叶节点,那么该如何确定。protected EventListenerList
listenerList
听众。protected TreeNode
root
树的根。
-
构造方法摘要
构造方法 Constructor 描述 DefaultTreeModel(TreeNode root)
创建一个树,其中任何节点可以拥有子节点。DefaultTreeModel(TreeNode root, boolean asksAllowsChildren)
创建一个树,指定任何节点是否可以有子节点,或者只有某些节点可以有子节点。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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)
返回父节点的子数组中的 父索引 的索引孩子。int
getChildCount(Object 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)
调用此选项将parentChild插入到父项子节点的位置索引中。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
s,则调用此方法。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的用户对象,并发布一个节点更改。
-
-
-
字段详细信息
-
root
protected TreeNode root
树的根。
-
listenerList
protected EventListenerList listenerList
听众。
-
asksAllowsChildren
protected boolean asksAllowsChildren
确定isLeaf
方法如何确定节点是否为叶节点。 如果为true,则如果节点不允许孩子,则节点是叶节点。 (如果它允许孩子,它不是一个叶子节点,即使没有孩子)。例如,它可以区分文件系统中的文件夹节点和文件节点。如果该值为false,则任何没有子节点的节点都是叶节点,任何节点都可以获取子节点。
-
-
构造方法详细信息
-
DefaultTreeModel
@ConstructorProperties("root") public DefaultTreeModel(TreeNode root)
创建一个树,其中任何节点可以拥有子节点。- 参数
-
root
- 作为root
的TreeNode对象 - 另请参见:
-
DefaultTreeModel(TreeNode, 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
- 树根的新值
-
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)
返回父节点的子数组中的父索引的索引孩子。 父项必须是先前从此数据源获取的节点。 如果index是parent的有效索引(即index > = 0 && index <getChildCount( parent )),则不应返回null。
-
getChildCount
public int getChildCount(Object parent)
返回父节点的子节点数。 如果节点是叶子或没有子节点,则返回0。 父项必须是先前从此数据源获取的节点。- Specified by:
-
getChildCount
在接口TreeModel
- 参数
-
parent
- 从该数据源获取的树中的一个节点 - 结果
- 节点 父节点的 子节点数
-
isLeaf
public boolean isLeaf(Object node)
返回指定节点是否为叶节点。 测试的方式取决于askAllowsChildren
设置。- Specified by:
-
isLeaf
在接口TreeModel
- 参数
-
node
- 要检查的节点 - 结果
- 如果节点是叶节点,则为true
- 另请参见:
-
asksAllowsChildren
,TreeModel.isLeaf(java.lang.Object)
-
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数组,提供从根到指定节点的路径
-
addTreeModelListener
public void addTreeModelListener(TreeModelListener l)
添加树树更改后发布的TreeModelEvent的侦听器。- Specified by:
-
addTreeModelListener
在接口TreeModel
- 参数
-
l
- 要添加的监听器 - 另请参见:
-
removeTreeModelListener(javax.swing.event.TreeModelListener)
-
removeTreeModelListener
public void removeTreeModelListener(TreeModelListener l)
删除之前使用 addTreeModelListener()添加的监听器。- Specified by:
-
removeTreeModelListener
接口TreeModel
- 参数
-
l
- 要删除的侦听器 - 另请参见:
-
addTreeModelListener(javax.swing.event.TreeModelListener)
-
getTreeModelListeners
public TreeModelListener[] getTreeModelListeners()
返回在此模型上注册的所有树模型侦听器的数组。- 结果
-
所有这个模型的
TreeModelListener
s或一个空数组,如果没有树模型侦听器当前注册 - 从以下版本开始:
- 1.4
- 另请参见:
-
addTreeModelListener(javax.swing.event.TreeModelListener)
,removeTreeModelListener(javax.swing.event.TreeModelListener)
-
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()
-
-