APIdia Launch Partner
Top Description Inners Fields Constructors Methods
javax.swing.tree

public Class DefaultMutableTreeNode

extends Object
implements Cloneable, MutableTreeNode, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, javax.swing.tree.MutableTreeNode, javax.swing.tree.TreeNode, java.lang.Cloneable
Known Direct Subclasses
javax.swing.tree.FixedHeightLayoutCache.FHTreeStateNode, javax.swing.tree.VariableHeightLayoutCache.TreeStateNode, javax.swing.JTree.DynamicUtilTreeNode
Annotations
@SuppressWarnings:serial
Imports
java.beans.Transient, java.io.IOException, .ObjectInputStream, .ObjectOutputStream, .Serial, .Serializable, java.util.Collections, .EmptyStackException, .Enumeration, .NoSuchElementException, .Stack, .Vector

A DefaultMutableTreeNode is a general-purpose node in a tree data structure. For examples of using default mutable tree nodes, see How to Use Trees in The Java Tutorial.

A tree node may have at most one parent and 0 or more children. DefaultMutableTreeNode provides operations for examining and modifying a node's parent and children and also operations for examining the tree that the node is a part of. A node's tree is the set of all nodes that can be reached by starting at the node and following all the possible links to parents and children. A node with no parent is the root of its tree; a node with no children is a leaf. A tree may consist of many subtrees, each node acting as the root for its own subtree.

This class provides enumerations for efficiently traversing a tree or subtree in various orders or for following the path between two nodes. A DefaultMutableTreeNode may also hold a reference to a user object, the use of which is left to the user. Asking a DefaultMutableTreeNode for its string representation with toString() returns the string representation of its user object.

This is not a thread safe class.If you intend to use a DefaultMutableTreeNode (or a tree of TreeNodes) in more than one thread, you need to do your own synchronizing. A good convention to adopt is synchronizing on the root node of a tree.

While DefaultMutableTreeNode implements the MutableTreeNode interface and will allow you to add in any implementation of MutableTreeNode not all of the methods in DefaultMutableTreeNode will be applicable to all MutableTreeNodes implementations. Especially with some of the enumerations that are provided, using some of these methods assumes the DefaultMutableTreeNode contains only DefaultMutableNode instances. All of the TreeNode/MutableTreeNode methods will behave as defined no matter what implementations are added.

Warning

Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the java.beans package. Please see java.beans.XMLEncoder.

Author
Rob Davis
See Also
MutableTreeNode

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static class
pack-priv static class
pack-priv static class
private static class

Field Summary

Modifier and TypeField and Description
protected boolean
allowsChildren

true if the node is able to have children

protected Vector<TreeNode>
children

array of children, may be null if this node has no children

public static final Enumeration<TreeNode>
EMPTY_ENUMERATION

An enumeration that is always empty.

protected MutableTreeNode
parent

this node's parent, or null if this node has no parent

private static final long
serialVersionUID

Use serialVersionUID from JDK 1.7 for interoperability.

protected transient Object
userObject

optional user object

Constructor Summary

AccessConstructor and Description
public
DefaultMutableTreeNode()

Creates a tree node that has no parent and no children, but which allows children.

public
DefaultMutableTreeNode(Object
an Object provided by the user that constitutes the node's data
userObject
)

Creates a tree node with no parent, no children, but which allows children, and initializes it with the specified user object.

public
DefaultMutableTreeNode(Object
an Object provided by the user that constitutes the node's data
userObject
,
boolean
if true, the node is allowed to have child nodes -- otherwise, it is always a leaf node
allowsChildren
)

Creates a tree node with no parent, no children, initialized with the specified user object, and that allows children only if specified.

Method Summary

Modifier and TypeMethod and Description
public void
add(MutableTreeNode
node to add as a child of this node
newChild
)

Removes newChild from its parent and makes it a child of this node by adding it to the end of this node's child array.

public Enumeration<TreeNode>

Returns:

an enumeration for traversing the tree in breadth-first order
breadthFirstEnumeration
()

Creates and returns an enumeration that traverses the subtree rooted at this node in breadth-first order.

public Enumeration<TreeNode>

Returns:

an Enumeration of this node's children
children
()

Implements javax.swing.tree.TreeNode.children.

Creates and returns a forward-order enumeration of this node's children.

public Object

Returns:

a copy of this node
clone
()

Overrides java.lang.Object.clone.

Overridden to make clone public.

public Enumeration<TreeNode>

Returns:

an enumeration for traversing the tree in depth-first order
depthFirstEnumeration
()

Creates and returns an enumeration that traverses the subtree rooted at this node in depth-first order.

public boolean

Returns:

true if this node allows children, else false
getAllowsChildren
()

Implements javax.swing.tree.TreeNode.getAllowsChildren.

Returns true if this node is allowed to have children.

public TreeNode

Returns:

the child of this node that immediately follows aChild
getChildAfter
(TreeNode
the child node to look for next child after it
aChild
)

Returns the child in this node's child array that immediately follows aChild, which must be a child of this node.

public TreeNode

Returns:

the TreeNode in this node's child array at the specified index
getChildAt
(int
an index into this node's child array
index
)

Implements javax.swing.tree.TreeNode.getChildAt.

Returns the child at the specified index in this node's child array.

public TreeNode

Returns:

the child of this node that immediately precedes aChild
getChildBefore
(TreeNode
the child node to look for previous child before it
aChild
)

Returns the child in this node's child array that immediately precedes aChild, which must be a child of this node.

public int

Returns:

an int giving the number of children of this node
getChildCount
()

Implements javax.swing.tree.TreeNode.getChildCount.

Returns the number of children of this node.

public int

Returns:

the depth of the tree whose root is this node
getDepth
()

Returns the depth of the tree rooted at this node -- the longest distance from this node to a leaf.

public TreeNode

Returns:

the first child of this node
getFirstChild
()

Returns this node's first child.

public DefaultMutableTreeNode

Returns:

the first leaf in the subtree rooted at this node
getFirstLeaf
()

Finds and returns the first leaf that is a descendant of this node -- either this node or its first child's first leaf.

public int

Returns:

an int giving the index of the node in this node's child array, or -1 if the specified node is a not a child of this node
getIndex
(TreeNode
the TreeNode to search for among this node's children
aChild
)

Implements javax.swing.tree.TreeNode.getIndex.

Returns the index of the specified child in this node's child array.

public TreeNode

Returns:

the last child of this node
getLastChild
()

Returns this node's last child.

public DefaultMutableTreeNode

Returns:

the last leaf in the subtree rooted at this node
getLastLeaf
()

Finds and returns the last leaf that is a descendant of this node -- either this node or its last child's last leaf.

public int

Returns:

the number of leaves beneath this node
getLeafCount
()

Returns the total number of leaves that are descendants of this node.

public int

Returns:

the number of levels above this node
getLevel
()

Returns the number of levels above this node -- the distance from the root to this node.

public DefaultMutableTreeNode

Returns:

returns the next leaf past this node
getNextLeaf
()

Returns the leaf after this node or null if this node is the last leaf in the tree.

public DefaultMutableTreeNode

Returns:

the node that follows this node in a preorder traversal, or null if this node is last
getNextNode
()

Returns the node that follows this node in a preorder traversal of this node's tree.

public DefaultMutableTreeNode

Returns:

the sibling of this node that immediately follows this node
getNextSibling
()

Returns the next sibling of this node in the parent's children array.

public TreeNode

Returns:

this node's parent TreeNode, or null if this node has no parent
getParent
()

Implements javax.swing.tree.TreeNode.getParent.

Returns this node's parent or null if this node has no parent.

public TreeNode[]

Returns:

an array of TreeNode objects giving the path, where the first element in the path is the root and the last element is this node.
getPath
()

Returns the path from the root, to get to this node.

protected TreeNode[]

Returns:

an array of TreeNodes giving the path from the root to the specified node
getPathToRoot
(TreeNode
the TreeNode to get the path for
aNode
,
int
an int giving the number of steps already taken towards the root (on recursive calls), used to size the returned array
depth
)

Builds the parents of node up to and including the root node, where the original node is the last element in the returned array.

public DefaultMutableTreeNode

Returns:

returns the leaf before this node
getPreviousLeaf
()

Returns the leaf before this node or null if this node is the first leaf in the tree.

public DefaultMutableTreeNode

Returns:

the node that precedes this node in a preorder traversal, or null if this node is the first
getPreviousNode
()

Returns the node that precedes this node in a preorder traversal of this node's tree.

public DefaultMutableTreeNode

Returns:

the sibling of this node that immediately precedes this node
getPreviousSibling
()

Returns the previous sibling of this node in the parent's children array.

public TreeNode

Returns:

the root of the tree that contains this node
getRoot
()

Returns the root of the tree that contains this node.

public TreeNode

Returns:

nearest ancestor common to this node and aNode, or null if none
getSharedAncestor
(DefaultMutableTreeNode
node to find common ancestor with
aNode
)

Returns the nearest common ancestor to this node and aNode.

public int

Returns:

the number of siblings of this node
getSiblingCount
()

Returns the number of siblings of this node.

public Object

Returns:

the Object stored at this node by the user
getUserObject
()

Returns this node's user object.

public Object[]

Returns:

the user object path, from the root, to get to this node
getUserObjectPath
()

Returns the user object path, from the root, to get to this node.

public void
insert(MutableTreeNode
the MutableTreeNode to insert under this node
newChild
,
int
the index in this node's child array where this node is to be inserted
childIndex
)

Implements javax.swing.tree.MutableTreeNode.insert.

Removes newChild from its present parent (if it has a parent), sets the child's parent to this node, and then adds the child to this node's child array at index childIndex.

public boolean

Returns:

true if this node has no children
isLeaf
()

Implements javax.swing.tree.TreeNode.isLeaf.

Returns true if this node has no children.

public boolean

Returns:

true if this node is a descendant of anotherNode
isNodeAncestor
(TreeNode
node to test as an ancestor of this node
anotherNode
)

Returns true if anotherNode is an ancestor of this node -- if it is this node, this node's parent, or an ancestor of this node's parent.

public boolean

Returns:

true if aNode is a child of this node; false if aNode is null
isNodeChild
(TreeNode
the node to determinate whether it is a child
aNode
)

Returns true if aNode is a child of this node.

public boolean

Returns:

true if this node is an ancestor of anotherNode
isNodeDescendant
(DefaultMutableTreeNode
node to test as descendant of this node
anotherNode
)

Returns true if anotherNode is a descendant of this node -- if it is this node, one of this node's children, or a descendant of one of this node's children.

public boolean

Returns:

true if aNode is in the same tree as this node; false if aNode is null
isNodeRelated
(DefaultMutableTreeNode
node to find common ancestor with
aNode
)

Returns true if and only if aNode is in the same tree as this node.

public boolean

Returns:

true if anotherNode is a sibling of this node
isNodeSibling
(TreeNode
node to test as sibling of this node
anotherNode
)

Returns true if anotherNode is a sibling of (has the same parent as) this node.

public boolean

Returns:

true if this node is the root of its tree
isRoot
()

Returns true if this node is the root of the tree.

public Enumeration<TreeNode>

Returns:

an enumeration for following the path from an ancestor of this node to this one
pathFromAncestorEnumeration
(TreeNode
the node to start enumeration from
ancestor
)

Creates and returns an enumeration that follows the path from ancestor to this node.

public Enumeration<TreeNode>

Returns:

an enumeration for traversing the tree in postorder
postorderEnumeration
()

Creates and returns an enumeration that traverses the subtree rooted at this node in postorder.

public Enumeration<TreeNode>

Returns:

an enumeration for traversing the tree in preorder
preorderEnumeration
()

Creates and returns an enumeration that traverses the subtree rooted at this node in preorder.

private void
public void
remove(int
the index in this node's child array of the child to remove
childIndex
)

Implements javax.swing.tree.MutableTreeNode.remove.

Removes the child at the specified index from this node's children and sets that node's parent to null.

public void
remove(MutableTreeNode
a child of this node to remove
aChild
)

Implements javax.swing.tree.MutableTreeNode.remove.

Removes aChild from this node's child array, giving it a null parent.

public void
removeAllChildren()

Removes all of this node's children, setting their parents to null.

public void
removeFromParent()

Implements javax.swing.tree.MutableTreeNode.removeFromParent.

Removes the subtree rooted at this node from the tree, giving this node a null parent.

public void
setAllowsChildren(boolean
true if this node is allowed to have children
allows
)

Determines whether or not this node is allowed to have children.

public void
setParent(MutableTreeNode
this node's new parent
newParent
)

Implements javax.swing.tree.MutableTreeNode.setParent.

Sets this node's parent to newParent but does not change the parent's child array.

public void
setUserObject(Object
the Object that constitutes this node's user-specified data
userObject
)

Implements javax.swing.tree.MutableTreeNode.setUserObject.

Sets the user object for this node to userObject.

public String
toString()

Overrides java.lang.Object.toString.

Returns the result of sending toString() to this node's user object, or the empty string if the node has no user object.

private void
Inherited from java.lang.Object:
equalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait