- 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
软件包中添加了对所有JavaBeansjava.beans
长期存储的支持。 请参阅XMLEncoder
。- 另请参见:
- Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 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)
返回父节点的子数组中的 父索引 的索引孩子。int
getChildCount(Object parent)
返回 父项的子项数。int
getIndexOfChild(Object parent, Object child)
返回父级中的子索引。<T extends EventListener>
T[]getListeners(类<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)
调用此方法在父项子项中的位置索引处插入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的用户对象,并发布更改的节点。
-
-
-
字段详细信息
-
root
protected TreeNode root
树的根。
-
listenerList
protected EventListenerList listenerList
听众。
-
asksAllowsChildren
protected boolean asksAllowsChildren
确定isLeaf
方法如何确定节点是否为叶节点。 如果为true,则节点是叶节点,如果它不允许子节点。 (如果它允许子节点,则它不是叶子节点,即使没有子节点。)这使您可以区分文件系统中的文件夹节点和文件节点。如果此值为false,则任何没有子节点的节点都是叶节点,并且任何节点都可以获取子节点。
-
-
构造方法详细信息
-
DefaultTreeModel
@ConstructorProperties("root") 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()被消息。- 参数
-
newValue
- 如果为true,则getAllowsChildren()为messaged,否则isLeaf()为messaged
-
asksAllowsChildren
public boolean asksAllowsChildren()
告诉如何确定叶节点。- 结果
- 如果只允许子节点的节点是叶节点,则返回true;如果没有子节点(即使允许)的节点是叶节点,则返回false
- 另请参见:
-
asksAllowsChildren
-
setRoot
public void setRoot(TreeNode root)
将根设置为root
。 nullroot
意味着树不显示任何内容,并且是合法的。- 参数
-
root
- 树根的新值
-
getIndexOfChild
public int getIndexOfChild(Object parent, Object child)
返回父级中的子索引。 如果父项或子项为null
,则返回-1。- Specified by:
-
getIndexOfChild
在界面TreeModel
- 参数
-
parent
- 树中的注释,从此数据源获取 -
child
- 我们感兴趣的节点 - 结果
-
父项
null
的索引,如果父项或子项为null
-
getChild
public Object getChild(Object parent, int index)
返回父节点的子数组中的父索引的索引孩子。 parent必须是先前从此数据源获取的节点。 如果index是父级的有效索引(即index > = 0 && index <getChildCount( parent )),则不应返回null。
-
getChildCount
public int getChildCount(Object parent)
返回父项的子项数。 如果节点是叶子或者没有子节点,则返回0。 parent必须是先前从此数据源获取的节点。- 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)
调用此方法在父项子项中的位置索引处插入newChild。 然后,这将消息nodesWereInserted以创建适当的事件。 这是添加子项的首选方法,因为它将创建适当的事件。- 参数
-
newChild
- 要插入的子节点 -
parent
- 将添加子节点新节点的节点 -
index
- 父母子女的索引
-
removeNodeFromParent
public void removeNodeFromParent(MutableTreeNode node)
发送消息以从其父节点中删除节点。 这将告知nodesWereRemoved创建适当的事件。 这是在为您处理事件创建时删除节点的首选方法。- 参数
-
node
- 要从其中删除的节点
-
nodeChanged
public void nodeChanged(TreeNode node)
在更改了树中节点的表示方式后调用此方法。- 参数
-
node
- 已更改的节点
-
reload
public void reload(TreeNode node)
如果您修改了此模型所依赖的TreeNode
请调用此方法。 该模型将通知其所有侦听器模型已在给定节点下更改。- 参数
-
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应该是已删除元素的索引,并且必须按升序排序。 并且removedChildren应该是已删除的子对象的数组。- 参数
-
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
或空数组 - 从以下版本开始:
- 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(类<T> listenerType)
返回此模型上当前注册为FooListener
的所有对象的数组。FooListener
s使用addFooListener
方法注册。您可以使用类文字指定
listenerType
参数,例如FooListener.class
。 例如,您可以使用以下代码查询DefaultTreeModel
m
作为其树模型侦听器:TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class));
如果不存在此类侦听器,则此方法返回空数组。- 参数类型
-
T
- 侦听器类型 - 参数
-
listenerType
- 请求的侦听器类型 - 结果
-
此组件上注册为
FooListener
的所有对象的数组,如果未添加此类侦听器,则为空数组 - 异常
-
ClassCastException
- 如果listenerType
未指定实现java.util.EventListener
的类或接口 - 从以下版本开始:
- 1.3
- 另请参见:
-
getTreeModelListeners()
-
-