- 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 booleanasksAllowsChildren确定isLeaf方法如何确定节点是否为叶节点。protected EventListenerListlistenerList听众。protected TreeNoderoot树的根。
-
构造方法摘要
构造方法 构造器 描述 DefaultTreeModel(TreeNode root)创建一个树,任何节点都可以在其中生成子节点。DefaultTreeModel(TreeNode root, boolean asksAllowsChildren)创建一个树,指定是否有任何节点可以有子节点,或者只有某些节点可以有子节点。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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(类<T> listenerType)返回此模型上当前注册为FooListener的所有对象的数组。TreeNode[]getPathToRoot(TreeNode aNode)构建节点的父节点,包括根节点,其中原始节点是返回数组中的最后一个元素。protected TreeNode[]getPathToRoot(TreeNode aNode, int depth)构建节点的父节点,包括根节点,其中原始节点是返回数组中的最后一个元素。ObjectgetRoot()返回树的根。TreeModelListener[]getTreeModelListeners()返回在此模型上注册的所有树模型侦听器的数组。voidinsertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index)调用此方法在父项子项中的位置索引处插入newChild。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)如果您已修改此模型所依赖的TreeNode请调用此方法。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- 作为树的根的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的所有对象的数组。FooListeners使用addFooListener方法注册。您可以使用类文字指定
listenerType参数,例如FooListener.class。 例如,您可以使用以下代码查询DefaultTreeModelm作为其树模型侦听器:TreeModelListener[] tmls = (TreeModelListener[])(m.getListeners(TreeModelListener.class));如果不存在此类侦听器,则此方法返回空数组。- 参数类型
-
T- 侦听器类型 - 参数
-
listenerType- 请求的侦听器类型 - 结果
-
此组件上注册为
FooListener的所有对象的数组,如果未添加此类侦听器,则为空数组 - 异常
-
ClassCastException- 如果listenerType未指定实现java.util.EventListener的类或接口 - 从以下版本开始:
- 1.3
- 另请参见:
-
getTreeModelListeners()
-
-