- java.lang.Object
-
- javax.swing.tree.DefaultMutableTreeNode
-
- 实现的所有接口
-
Serializable
,Cloneable
,MutableTreeNode
,TreeNode
- 已知直接子类:
-
JTree.DynamicUtilTreeNode
public class DefaultMutableTreeNodeextends Objectimplements Cloneable, MutableTreeNode, Serializable
DefaultMutableTreeNode
是树数据结构中的通用节点。 有关使用默认可变树节点的示例,请参阅The Java Tutorial中的 How to Use Trees 。树节点可以具有至多一个父节点和0个或更多个子节点。
DefaultMutableTreeNode
提供了检查和修改节点的父节点和子节点的操作,以及用于检查节点所属的树的操作。 节点树是通过从节点开始并跟随到父节点和子节点的所有可能链接可以到达的所有节点的集合。 没有父节点的节点是其树的根; 没有孩子的节点是叶子。 树可以由许多子树组成,每个节点充当其自己的子树的根。此类提供有效遍历各种顺序中的树或子树或跟踪两个节点之间的路径的枚举。
DefaultMutableTreeNode
还可以保持对用户对象的引用,用户对象的使用留给用户。 使用DefaultMutableTreeNode
向DefaultMutableTreeNode
询问其字符串表示toString()
将返回其用户对象的字符串表示形式。这不是一个线程安全的类。 如果您打算在多个线程中使用DefaultMutableTreeNode(或TreeNodes树),则需要进行自己的同步。 采用的一个好习惯是在树的根节点上进行同步。
虽然DefaultMutableTreeNode实现了MutableTreeNode接口,并允许您添加MutableTreeNode的任何实现,但并非DefaultMutableTreeNode中的所有方法都适用于所有MutableTreeNodes实现。 特别是对于提供的一些枚举,使用其中一些方法假定DefaultMutableTreeNode仅包含DefaultMutableNode实例。 无论添加什么实现,所有TreeNode / MutableTreeNode方法都将按照定义运行。
警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始,
java.beans
软件包中添加了对所有JavaBeansjava.beans
长期存储的支持。 请参阅XMLEncoder
。- 另请参见:
-
MutableTreeNode
, Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 protected boolean
allowsChildren
如果节点能够生成子节点,则为trueprotected Vector<TreeNode>
children
如果此节点没有子节点,则子节点数组可以为nullstatic Enumeration<TreeNode>
EMPTY_ENUMERATION
一个始终为空的枚举。protected MutableTreeNode
parent
此节点的父节点,如果此节点没有父节点,则返回nullprotected Object
userObject
可选的用户对象
-
构造方法摘要
构造方法 构造器 描述 DefaultMutableTreeNode()
创建一个没有父节点但没有子节点但允许子节点的树节点。DefaultMutableTreeNode(Object userObject)
创建一个没有父节点,没有子节点但允许子节点的树节点,并使用指定的用户对象对其进行初始化。DefaultMutableTreeNode(Object userObject, boolean allowsChildren)
创建一个没有父节点,没有子节点的树节点,使用指定的用户对象初始化,并且仅在指定时允许子节点。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 void
add(MutableTreeNode newChild)
从其父节点中删除newChild
,并通过将其添加到此节点的子数组的末尾使其成为此节点的子节点。Enumeration<TreeNode>
breadthFirstEnumeration()
创建并返回以广度优先顺序遍历以此节点为根的子树的枚举。Enumeration<TreeNode>
children()
创建并返回此节点的子节点的前向枚举。Object
clone()
重写以使克隆公开。Enumeration<TreeNode>
depthFirstEnumeration()
创建并返回以深度优先顺序遍历以此节点为根的子树的枚举。boolean
getAllowsChildren()
如果允许此节点具有子节点,则返回true。TreeNode
getChildAfter(TreeNode aChild)
返回紧跟在aChild
之后的此节点的子数组中的子节点,该子节点必须是此节点的子节点。TreeNode
getChildAt(int index)
返回此节点的子数组中指定索引处的子节点。TreeNode
getChildBefore(TreeNode aChild)
返回紧接在aChild
之前的此节点的子数组中的子节点,该子节点必须是此节点的子节点。int
getChildCount()
返回此节点的子节点数。int
getDepth()
返回以此节点为根的树的深度 - 从此节点到叶子的最长距离。TreeNode
getFirstChild()
返回此节点的第一个子节点。DefaultMutableTreeNode
getFirstLeaf()
查找并返回作为此节点后代的第一个叶子 - 此节点或其第一个子节点的第一个叶子。int
getIndex(TreeNode aChild)
返回此节点的子数组中指定子节点的索引。TreeNode
getLastChild()
返回此节点的最后一个子节点。DefaultMutableTreeNode
getLastLeaf()
查找并返回作为此节点后代的最后一个叶子 - 此节点或其最后一个子节点的最后一个叶子。int
getLeafCount()
返回作为此节点后代的叶子总数。int
getLevel()
返回此节点上方的级别数 - 从根节点到此节点的距离。DefaultMutableTreeNode
getNextLeaf()
返回此节点后的叶子,如果此节点是树中的最后一个叶子,则返回null。DefaultMutableTreeNode
getNextNode()
返回此节点树的前序遍历中此节点后面的节点。DefaultMutableTreeNode
getNextSibling()
返回父节点子节点中此节点的下一个兄弟节点。TreeNode
getParent()
返回此节点的父节点,如果此节点没有父节点,则返回null。TreeNode[]
getPath()
返回从根到达此节点的路径。protected TreeNode[]
getPathToRoot(TreeNode aNode, int depth)
构建节点的父节点,包括根节点,其中原始节点是返回数组中的最后一个元素。DefaultMutableTreeNode
getPreviousLeaf()
返回此节点之前的叶子,如果此节点是树中的第一个叶子,则返回null。DefaultMutableTreeNode
getPreviousNode()
在此节点树的前序遍历中返回此节点之前的节点。DefaultMutableTreeNode
getPreviousSibling()
返回父节点子节点中此节点的上一个兄弟节点。TreeNode
getRoot()
返回包含此节点的树的根。TreeNode
getSharedAncestor(DefaultMutableTreeNode aNode)
返回此节点和aNode
最近的共同祖先。int
getSiblingCount()
返回此节点的兄弟节点数。Object
getUserObject()
返回此节点的用户对象。Object[]
getUserObjectPath()
返回从root用户对象路径到达此节点。void
insert(MutableTreeNode newChild, int childIndex)
从其当前父项中删除newChild
(如果它具有父项),将子项的父项设置为此节点,然后将子项添加到此节点的子数组,索引为childIndex
。boolean
isLeaf()
如果此节点没有子节点,则返回true。boolean
isNodeAncestor(TreeNode anotherNode)
如果anotherNode
是此节点的祖先,则返回true - 如果它是此节点,此节点的父节点或此节点的父节点的祖先。boolean
isNodeChild(TreeNode aNode)
如果aNode
是此节点的子节点,则返回true。boolean
isNodeDescendant(DefaultMutableTreeNode anotherNode)
如果anotherNode
是此节点的后代,则返回true - 如果它是此节点,此节点的子节点之一,或此节点的子节点之一的后代。boolean
isNodeRelated(DefaultMutableTreeNode aNode)
当且仅当aNode
与此节点位于同一树中时,返回true。boolean
isNodeSibling(TreeNode anotherNode)
如果anotherNode
是此节点的兄弟节点(具有相同的父节点),则返回true。boolean
isRoot()
如果此节点是树的根,则返回true。Enumeration<TreeNode>
pathFromAncestorEnumeration(TreeNode ancestor)
创建并返回从ancestor
到此节点的路径之后的枚举。Enumeration<TreeNode>
postorderEnumeration()
创建并返回以后序遍历以此节点为根的子树的枚举。Enumeration<TreeNode>
preorderEnumeration()
创建并返回一个枚举,该枚举以预先的顺序遍历以此节点为根的子树。void
remove(int childIndex)
从此节点的子节点移除指定索引处的子节点,并将该节点的父节点设置为null。void
remove(MutableTreeNode aChild)
从此节点的子数组中删除aChild
,为其提供null父项。void
removeAllChildren()
删除所有此节点的子节点,将其父节点设置为null。void
removeFromParent()
从树中删除以此节点为根的子树,为此节点提供null父节点。void
setAllowsChildren(boolean allows)
确定是否允许此节点拥有子节点。void
setParent(MutableTreeNode newParent)
将此节点的父节点设置为newParent
但不更改父节点的子节点。void
setUserObject(Object userObject)
将此节点的用户对象设置为userObject
。String
toString()
返回将toString()
发送到此节点的用户对象的结果,如果节点没有用户对象,则返回空字符串。
-
-
-
字段详细信息
-
EMPTY_ENUMERATION
public static final Enumeration<TreeNode> EMPTY_ENUMERATION
一个始终为空的枚举。 当请求叶子节点的子节点的枚举时使用。
-
parent
protected MutableTreeNode parent
此节点的父节点,如果此节点没有父节点,则返回null
-
userObject
protected transient Object userObject
可选的用户对象
-
allowsChildren
protected boolean allowsChildren
如果节点能够生成子节点,则为true
-
-
构造方法详细信息
-
DefaultMutableTreeNode
public DefaultMutableTreeNode()
创建一个没有父节点但没有子节点但允许子节点的树节点。
-
DefaultMutableTreeNode
public DefaultMutableTreeNode(Object userObject)
创建一个没有父节点,没有子节点但允许子节点的树节点,并使用指定的用户对象对其进行初始化。- 参数
-
userObject
- 用户提供的构成节点数据的对象
-
DefaultMutableTreeNode
public DefaultMutableTreeNode(Object userObject, boolean allowsChildren)
创建一个没有父节点,没有子节点的树节点,使用指定的用户对象初始化,并且仅在指定时允许子节点。- 参数
-
userObject
- 用户提供的构成节点数据的对象 -
allowsChildren
- 如果为true,则允许节点具有子节点 - 否则,它始终是叶节点
-
-
方法详细信息
-
insert
public void insert(MutableTreeNode newChild, int childIndex)
从其当前父级移除newChild
(如果它具有父级),将子级的父级设置为此节点,然后将子级添加到此节点的子数组,索引为childIndex
。newChild
不能为null,并且不能是此节点的祖先。- Specified by:
-
insert
接口MutableTreeNode
- 参数
-
newChild
- 要在此节点下插入的MutableTreeNode -
childIndex
- 此节点的子数组中要插入此节点的索引 - 异常
-
ArrayIndexOutOfBoundsException
- 如果childIndex
超出范围 -
IllegalArgumentException
- 如果newChild
为null或是此节点的祖先 -
IllegalStateException
- 如果此节点不允许子节点 - 另请参见:
-
isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)
-
remove
public void remove(int childIndex)
从此节点的子节点移除指定索引处的子节点,并将该节点的父节点设置为null。 要删除的子节点必须是MutableTreeNode
。- Specified by:
-
remove
接口MutableTreeNode
- 参数
-
childIndex
- 要删除的子节点的子节点中的索引 - 异常
-
ArrayIndexOutOfBoundsException
- 如果childIndex
超出范围
-
setParent
public void setParent(MutableTreeNode newParent)
将此节点的父节点设置为newParent
但不更改父节点的子节点。 从insert()
和remove()
调用此方法来重新分配子项的父项,不应从其他任何地方发送消息。- Specified by:
-
setParent
接口MutableTreeNode
- 参数
-
newParent
- 此节点的新父节点
-
getParent
public TreeNode getParent()
返回此节点的父节点,如果此节点没有父节点,则返回null。
-
getChildAt
public TreeNode getChildAt(int index)
返回此节点的子数组中指定索引处的子节点。- Specified by:
-
getChildAt
在界面TreeNode
- 参数
-
index
- 此节点的子数组的索引 - 结果
- 此节点在指定索引处的子数组中的TreeNode
- 异常
-
ArrayIndexOutOfBoundsException
- 如果index
超出范围
-
getChildCount
public int getChildCount()
返回此节点的子节点数。- Specified by:
-
getChildCount
接口TreeNode
- 结果
- 一个int,给出该节点的子节点数
-
getIndex
public int getIndex(TreeNode aChild)
返回此节点的子数组中指定子节点的索引。 如果指定的节点不是此节点的子节点,则返回-1
。 该方法执行线性搜索,并且是O(n),其中n是子节点数。- Specified by:
-
getIndex
接口TreeNode
- 参数
-
aChild
- 要在此节点的子节点中搜索的TreeNode - 结果
- 一个int给出该节点的子数组中节点的索引,如果指定的节点不是该节点的子节点,
-1
- 异常
-
IllegalArgumentException
- 如果aChild
为空
-
children
public Enumeration<TreeNode> children()
创建并返回此节点的子节点的前向枚举。 修改此节点的子数组会使修改前创建的所有子枚举失效。
-
setAllowsChildren
public void setAllowsChildren(boolean allows)
确定是否允许此节点拥有子节点。 如果allows
为false,则删除此节点的所有子节点。注意:默认情况下,节点允许子节点。
- 参数
-
allows
- 如果允许此节点拥有子节点,则为true
-
getAllowsChildren
public boolean getAllowsChildren()
如果允许此节点具有子节点,则返回true。- Specified by:
-
getAllowsChildren
接口TreeNode
- 结果
- 如果此节点允许子节点,则为true,否则为false
-
setUserObject
public void setUserObject(Object userObject)
将此节点的用户对象设置为userObject
。- Specified by:
-
setUserObject
接口MutableTreeNode
- 参数
-
userObject
- 构成此节点的用户指定数据的Object - 另请参见:
-
getUserObject()
,toString()
-
getUserObject
public Object getUserObject()
返回此节点的用户对象。- 结果
- 用户在此节点存储的对象
- 另请参见:
-
setUserObject(java.lang.Object)
,toString()
-
removeFromParent
public void removeFromParent()
从树中删除以此节点为根的子树,为此节点提供null父节点。 如果此节点是其树的根,则不执行任何操作。- Specified by:
-
removeFromParent
接口MutableTreeNode
-
remove
public void remove(MutableTreeNode aChild)
从此节点的子数组中删除aChild
,为其提供null父项。- Specified by:
-
remove
接口MutableTreeNode
- 参数
-
aChild
- 要删除的此节点的子节点 - 异常
-
IllegalArgumentException
- 如果aChild
为null或不是此节点的子节点
-
removeAllChildren
public void removeAllChildren()
删除所有此节点的子节点,将其父节点设置为null。 如果此节点没有子节点,则此方法不执行任何操作。
-
add
public void add(MutableTreeNode newChild)
从其父节点中删除newChild
,并通过将其添加到此节点的子数组的末尾使其成为此节点的子节点。- 参数
-
newChild
- 要添加为此节点的子节点的节点 - 异常
-
IllegalArgumentException
- 如果newChild
为空 -
IllegalStateException
- 如果此节点不允许子节点 - 另请参见:
-
insert(javax.swing.tree.MutableTreeNode, int)
-
isNodeAncestor
public boolean isNodeAncestor(TreeNode anotherNode)
如果anotherNode
是此节点的祖先,则返回true - 如果它是此节点,此节点的父节点或此节点的父节点的祖先。 (请注意,节点被认为是其自身的祖先。)如果anotherNode
为null,则此方法返回false。 此操作最差为O(h),其中h是从根到此节点的距离。- 参数
-
anotherNode
- 要作为此节点的祖先进行测试的节点 - 结果
- 如果此节点是
anotherNode
的后代,则anotherNode
- 另请参见:
-
isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)
,getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode)
-
isNodeDescendant
public boolean isNodeDescendant(DefaultMutableTreeNode anotherNode)
如果anotherNode
是此节点的后代,则返回true - 如果它是此节点,此节点的子节点之一,或此节点的子节点之一的后代。 请注意,节点被视为自身的后代。 如果anotherNode
为null,则返回false。 此操作最差O(h)其中h是从根到anotherNode
的距离。- 参数
-
anotherNode
- 要作为此节点的后代进行测试的节点 - 结果
- 如果此节点是
anotherNode
的祖先,则anotherNode
- 另请参见:
-
isNodeAncestor(javax.swing.tree.TreeNode)
,getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode)
-
getSharedAncestor
public TreeNode getSharedAncestor(DefaultMutableTreeNode aNode)
返回此节点的最近共同祖先和aNode
。 如果不存在此类祖先,则返回null - 如果此节点和aNode
位于不同的树中,或者aNode
为null。 节点被认为是其自身的祖先。- 参数
-
aNode
- 用于查找共同祖先的节点 - 结果
- 此节点和
aNode
最近祖先,如果没有,则返回null - 另请参见:
-
isNodeAncestor(javax.swing.tree.TreeNode)
,isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)
-
isNodeRelated
public boolean isNodeRelated(DefaultMutableTreeNode aNode)
当且仅当aNode
与此节点位于同一树中时,返回true。 如果aNode
为null,则返回false。- 参数
-
aNode
- 用于查找共同祖先的节点 - 结果
- 如果
aNode
与此节点位于同一树中,aNode
true;否则为aNode
。 如果aNode
为空,则为false - 另请参见:
-
getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode)
,getRoot()
-
getDepth
public int getDepth()
返回以此节点为根的树的深度 - 从此节点到叶子的最长距离。 如果此节点没有子节点,则返回0.此操作比getLevel()
贵得多,因为它必须有效地遍历以此节点为根的整个树。- 结果
- 树的深度,其根是此节点
- 另请参见:
-
getLevel()
-
getLevel
public int getLevel()
返回此节点上方的级别数 - 从根节点到此节点的距离。 如果此节点是根节点,则返回0。- 结果
- 此节点上方的级别数
- 另请参见:
-
getDepth()
-
getPath
public TreeNode[] getPath()
返回从根到达此节点的路径。 路径中的最后一个元素是此节点。- 结果
- 给出路径的TreeNode对象数组,其中路径中的第一个元素是根,最后一个元素是此节点。
-
getPathToRoot
protected TreeNode[] getPathToRoot(TreeNode aNode, int depth)
构建节点的父节点,包括根节点,其中原始节点是返回数组中的最后一个元素。 返回数组的长度给出树中节点的深度。- 参数
-
aNode
- 获取路径的TreeNode -
depth
- 一个int,给出了已经对根进行的步骤数(在递归调用时),用于调整返回的数组的大小 - 结果
- TreeNodes数组,提供从根到指定节点的路径
-
getUserObjectPath
public Object[] getUserObjectPath()
返回从root用户对象路径到达此节点。 如果路径中的某些TreeNode具有空用户对象,则返回的路径将包含空值。- 结果
- 用户对象路径,从根目录到达此节点
-
getRoot
public TreeNode getRoot()
返回包含此节点的树的根。 根是具有空父级的祖先。- 结果
- 包含此节点的树的根
- 另请参见:
-
isNodeAncestor(javax.swing.tree.TreeNode)
-
isRoot
public boolean isRoot()
如果此节点是树的根,则返回true。 根是树中唯一具有空父级的节点; 每棵树都有一根。- 结果
- 如果此节点是其树的根,则返回true
-
getNextNode
public DefaultMutableTreeNode getNextNode()
返回此节点树的前序遍历中此节点后面的节点。 如果此节点是遍历的最后一个节点,则返回null。 这是遍历整棵树的低效方式; 而是使用枚举。- 结果
- 在前序遍历中跟随此节点的节点,如果此节点是最后一个,则为null
- 另请参见:
-
preorderEnumeration()
-
getPreviousNode
public DefaultMutableTreeNode getPreviousNode()
在此节点树的前序遍历中返回此节点之前的节点。 如果此节点是遍历的第一个节点 - 树的根,则返回null
。 这是遍历整棵树的低效方式; 而是使用枚举。- 结果
- 在前序遍历中此节点之前的节点,如果此节点是第一个节点,则为null
- 另请参见:
-
preorderEnumeration()
-
preorderEnumeration
public Enumeration<TreeNode> preorderEnumeration()
创建并返回一个枚举,该枚举以预先的顺序遍历以此节点为根的子树。 枚举的nextElement()
方法返回的第一个节点是此节点。通过插入,删除或移动节点来修改树会使修改前创建的任何枚举无效。
- 结果
- 用于预先遍历树的枚举
- 另请参见:
-
postorderEnumeration()
-
postorderEnumeration
public Enumeration<TreeNode> postorderEnumeration()
创建并返回以后序遍历以此节点为根的子树的枚举。 枚举的nextElement()
方法返回的第一个节点是最左边的叶子。 这与深度优先遍历相同。通过插入,删除或移动节点来修改树会使修改前创建的任何枚举无效。
- 结果
- 用于遍历后序遍历树的枚举
- 另请参见:
-
depthFirstEnumeration()
,preorderEnumeration()
-
breadthFirstEnumeration
public Enumeration<TreeNode> breadthFirstEnumeration()
创建并返回以广度优先顺序遍历以此节点为根的子树的枚举。 枚举的nextElement()
方法返回的第一个节点是此节点。通过插入,删除或移动节点来修改树会使修改前创建的任何枚举无效。
- 结果
- 以广度优先顺序遍历树的枚举
- 另请参见:
-
depthFirstEnumeration()
-
depthFirstEnumeration
public Enumeration<TreeNode> depthFirstEnumeration()
创建并返回以深度优先顺序遍历以此节点为根的子树的枚举。 枚举的nextElement()
方法返回的第一个节点是最左边的叶子。 这与后序遍历相同。通过插入,删除或移动节点来修改树会使修改前创建的任何枚举无效。
- 结果
- 以深度优先顺序遍历树的枚举
- 另请参见:
-
breadthFirstEnumeration()
,postorderEnumeration()
-
pathFromAncestorEnumeration
public Enumeration<TreeNode> pathFromAncestorEnumeration(TreeNode ancestor)
创建并返回从ancestor
到此节点的路径之后的枚举。 枚举的nextElement()
方法首先返回ancestor
,那么孩子ancestor
,它是此节点的祖先,依此类推,最后返回此节点。 枚举的创建是O(m),其中m是此节点与ancestor
(包括ancestor
之间的节点数。 每条nextElement()
消息为O(1)。通过插入,删除或移动节点来修改树会使修改前创建的任何枚举无效。
- 参数
-
ancestor
- 从中开始枚举的节点 - 结果
- 跟踪从此节点的祖先到此节点的路径的枚举
- 异常
-
IllegalArgumentException
- 如果ancestor
不是此节点的祖先 - 另请参见:
-
isNodeAncestor(javax.swing.tree.TreeNode)
,isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)
-
isNodeChild
public boolean isNodeChild(TreeNode aNode)
如果aNode
是此节点的子节点,则返回true。 如果aNode
为null,则此方法返回false。- 参数
-
aNode
- 确定其是否为子节点的节点 - 结果
- 如果
aNode
是此节点的子节点,aNode
true;否则为aNode
。 如果aNode
为空,则aNode
false
-
getFirstChild
public TreeNode getFirstChild()
返回此节点的第一个子节点。 如果此节点没有子节点,则抛出NoSuchElementException。- 结果
- 这个节点的第一个孩子
- 异常
-
NoSuchElementException
- 如果此节点没有子节点
-
getLastChild
public TreeNode getLastChild()
返回此节点的最后一个子节点。 如果此节点没有子节点,则抛出NoSuchElementException。- 结果
- 这个节点的最后一个子节点
- 异常
-
NoSuchElementException
- 如果此节点没有子节点
-
getChildAfter
public TreeNode getChildAfter(TreeNode aChild)
返回紧跟在aChild
之后的此节点的子数组中的子节点,该子节点必须是此节点的子节点。 如果aChild
是最后一个子aChild
,则返回null。 此方法对该节点的子节点执行aChild
的线性搜索,并且是O(n),其中n是子节点数; 要遍历整个子数组,请使用枚举。- 参数
-
aChild
- 要在其后查找下一个子节点的子节点 - 结果
- 紧跟在
aChild
的此节点的子节点 - 异常
-
IllegalArgumentException
- 如果aChild
为null或不是此节点的子节点 - 另请参见:
-
children
-
getChildBefore
public TreeNode getChildBefore(TreeNode aChild)
返回紧接在aChild
之前的此节点的子数组中的子节点,该子节点必须是此节点的子节点。 如果aChild
是第一个子aChild
,则返回null。 此方法对此节点的子节点执行aChild
的线性搜索,并且是O(n),其中n是子节点数。- 参数
-
aChild
- 要在其之前查找上一个子节点的子节点 - 结果
- 紧接在
aChild
之前的此节点的子节点 - 异常
-
IllegalArgumentException
- 如果aChild
为null或不是此节点的子节点
-
isNodeSibling
public boolean isNodeSibling(TreeNode anotherNode)
如果anotherNode
是此节点的兄弟节点(具有相同的父节点),则返回true。 节点是它自己的兄弟节点。 如果anotherNode
为null,则返回false。- 参数
-
anotherNode
- 要作为此节点的兄弟节点进行测试的节点 - 结果
- 如果
anotherNode
是此节点的兄弟,则anotherNode
true
-
getSiblingCount
public int getSiblingCount()
返回此节点的兄弟节点数。 节点是它自己的兄弟节点(如果它没有父节点或没有兄弟节点,则此方法返回1
)。- 结果
- 此节点的兄弟节点数
-
getNextSibling
public DefaultMutableTreeNode getNextSibling()
返回父节点子节点中此节点的下一个兄弟节点。 如果此节点没有父节点或父节点的最后一个节点,则返回null。 该方法执行线性搜索,即O(n),其中n是子节点数; 要遍历整个数组,请使用父级的子枚举。- 结果
- 紧跟在此节点之后的此节点的兄弟节点
- 另请参见:
-
children
-
getPreviousSibling
public DefaultMutableTreeNode getPreviousSibling()
返回父节点子节点中此节点的上一个兄弟节点。 如果此节点没有父节点或父节点的第一个子节点,则返回null。 此方法执行线性搜索,即O(n),其中n是子项数。- 结果
- 紧接在此节点之前的此节点的兄弟节点
-
isLeaf
public boolean isLeaf()
如果此节点没有子节点,则返回true。 要区分没有子节点的节点和不能有子节点的节点(例如,将文件与空目录区分开来),请将此方法与getAllowsChildren
结合使用- Specified by:
-
isLeaf
接口TreeNode
- 结果
- 如果此节点没有子节点,则为true
- 另请参见:
-
getAllowsChildren()
-
getFirstLeaf
public DefaultMutableTreeNode getFirstLeaf()
查找并返回作为此节点后代的第一个叶子 - 此节点或其第一个子节点的第一个叶子。 如果它是叶子,则返回此节点。- 结果
- 以该节点为根的子树中的第一个叶子
- 另请参见:
-
isLeaf()
,isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)
-
getLastLeaf
public DefaultMutableTreeNode getLastLeaf()
查找并返回作为此节点后代的最后一个叶子 - 此节点或其最后一个子节点的最后一个叶子。 如果它是叶子,则返回此节点。- 结果
- 以该节点为根的子树中的最后一个叶子
- 另请参见:
-
isLeaf()
,isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)
-
getNextLeaf
public DefaultMutableTreeNode getNextLeaf()
返回此节点后的叶子,如果此节点是树中的最后一个叶子,则返回null。在
MutableNode
接口的此实现中,此操作效率非常低。 为了确定下一个节点,该方法首先在父节点的子列表中执行线性搜索,以便找到当前节点。该实现使得该操作适合于来自已知位置的短遍历。 但是要遍历树中的所有叶子,您应该使用
depthFirstEnumeration
枚举树中的节点,并在每个节点上使用isLeaf
来确定哪些是叶子。- 结果
- 返回此节点后的下一个叶子
- 另请参见:
-
depthFirstEnumeration()
,isLeaf()
-
getPreviousLeaf
public DefaultMutableTreeNode getPreviousLeaf()
返回此节点之前的叶子,如果此节点是树中的第一个叶子,则返回null。在
MutableNode
接口的此实现中,此操作效率非常低。 为了确定前一节点,该方法首先在父节点的子列表中执行线性搜索,以便找到当前节点。该实现使得该操作适合于来自已知位置的短遍历。 但是要遍历树中的所有叶子,您应该使用
depthFirstEnumeration
枚举树中的节点,并在每个节点上使用isLeaf
来确定哪些是叶子。- 结果
- 返回此节点之前的叶子
- 另请参见:
-
depthFirstEnumeration()
,isLeaf()
-
getLeafCount
public int getLeafCount()
返回作为此节点后代的叶子总数。 如果此节点是叶子,则返回1
。 此方法为O(n),其中n是此节点的后代数。- 结果
- 此节点下的叶子数
- 另请参见:
-
isNodeAncestor(javax.swing.tree.TreeNode)
-
toString
public String toString()
返回将toString()
发送到此节点的用户对象的结果,如果节点没有用户对象,则返回空字符串。- 重写:
-
toString
类Object
- 结果
- 对象的字符串表示形式。
- 另请参见:
-
getUserObject()
-
-