- 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 booleanasksAllowsChildren确定isLeaf方法如果一个节点是一个叶节点,那么该如何确定。protected EventListenerListlistenerList听众。protected TreeNoderoot树的根。
-
构造方法摘要
构造方法 Constructor 描述 DefaultTreeModel(TreeNode root)创建一个树,其中任何节点可以拥有子节点。DefaultTreeModel(TreeNode root, boolean asksAllowsChildren)创建一个树,指定任何节点是否可以有子节点,或者只有某些节点可以有子节点。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidaddTreeModelListener(TreeModelListener l)添加树树更改后发布的TreeModelEvent的侦听器。booleanasksAllowsChildren()告诉叶节点如何确定。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)通知所有在此事件类型上通知有兴趣的听众。ObjectgetChild(Object parent, int index)返回父节点的子数组中的 父索引 的索引孩子。intgetChildCount(Object 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)构建节点直到并包括根节点的父节点,其中原始节点是返回的数组中的最后一个元素。ObjectgetRoot()返回树的根。TreeModelListener[]getTreeModelListeners()返回在此模型上注册的所有树模型侦听器的数组。voidinsertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index)调用此选项将parentChild插入到父项子节点的位置索引中。booleanisLeaf(Object node)返回指定节点是否为叶节点。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则调用此方法。voidreload(TreeNode node)如果您修改了此型号所依赖的TreeNodes,则调用此方法。voidremoveNodeFromParent(MutableTreeNode node)消息此消息从其父节点删除节点。voidremoveTreeModelListener(TreeModelListener l)删除之前使用 addTreeModelListener()添加的监听器。voidsetAsksAllowsChildren(boolean newValue)设置是否通过向TreeNodes请求getAllowsChildren()或isLeaf()来测试叶片性。voidsetRoot(TreeNode root)将根设置为root。voidvalueForPathChanged(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()
返回在此模型上注册的所有树模型侦听器的数组。- 结果
-
所有这个模型的
TreeModelListeners或一个空数组,如果没有树模型侦听器当前注册 - 从以下版本开始:
- 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。 例如,您可以使用以下代码查询DefaultTreeModelm其树模型侦听器:TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class));如果没有这样的侦听器存在,这个方法返回一个空数组。- 参数类型
-
T- 侦听器类型 - 参数
-
listenerType- 请求的侦听器的类型 - 结果
-
在此组件上注册为
FooListener的所有对象的数组,如果未添加此类侦听器,则为空数组 - 异常
-
ClassCastException- 如果listenerType没有指定实现java.util.EventListener的类或接口 - 从以下版本开始:
- 1.3
- 另请参见:
-
getTreeModelListeners()
-
-