| java.lang.Object | |
| ↳ | javax.swing.tree.DefaultMutableTreeNode | 
   Known Direct Subclasses
  
 | 
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 JavaBeansTM
 has been added to the java.beans package.
 Please see XMLEncoder.
| Fields | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| EMPTY_ENUMERATION | An enumeration that is always empty. | ||||||||||
| allowsChildren | true if the node is able to have children | ||||||||||
| children | array of children, may be null if this node has no children | ||||||||||
| parent | this node's parent, or null if this node has no parent | ||||||||||
| userObject | optional user object | ||||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Creates a tree node that has no parent and no children, but which
 allows children. 
  
   | |||||||||||
Creates a tree node with no parent, no children, but which allows
 children, and initializes it with the specified user object. 
  
   | |||||||||||
Creates a tree node with no parent, no children, initialized with
 the specified user object, and that allows children only if
 specified. 
  
   | |||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
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. | |||||||||||
Creates and returns an enumeration that traverses the subtree rooted at
 this node in breadth-first order. 
  
   | |||||||||||
Creates and returns a forward-order enumeration of this node's
 children. 
  
   | |||||||||||
Overridden to make clone public. 
  
   | |||||||||||
Creates and returns an enumeration that traverses the subtree rooted at
 this node in depth-first order. 
  
   | |||||||||||
Returns true if this node is allowed to have children. 
  
   | |||||||||||
Returns the child in this node's child array that immediately
 follows  
  
  aChild, which must be a child of this node. | |||||||||||
Returns the child at the specified index in this node's child array. 
  
   | |||||||||||
Returns the child in this node's child array that immediately
 precedes  
  
  aChild, which must be a child of this node. | |||||||||||
Returns the number of children of this node. 
  
   | |||||||||||
Returns the depth of the tree rooted at this node -- the longest
 distance from this node to a leaf. 
  
   | |||||||||||
Returns this node's first child. 
  
   | |||||||||||
Finds and returns the first leaf that is a descendant of this node --
 either this node or its first child's first leaf. 
  
   | |||||||||||
Returns the index of the specified child in this node's child array. 
  
   | |||||||||||
Returns this node's last child. 
  
   | |||||||||||
Finds and returns the last leaf that is a descendant of this node --
 either this node or its last child's last leaf. 
  
   | |||||||||||
Returns the total number of leaves that are descendants of this node. 
  
   | |||||||||||
Returns the number of levels above this node -- the distance from
 the root to this node. 
  
   | |||||||||||
Returns the leaf after this node or null if this node is the
 last leaf in the tree. 
  
   | |||||||||||
Returns the node that follows this node in a preorder traversal of this
 node's tree. 
  
   | |||||||||||
Returns the next sibling of this node in the parent's children array. 
  
   | |||||||||||
Returns this node's parent or null if this node has no parent. 
  
   | |||||||||||
Returns the path from the root, to get to this node. 
  
   | |||||||||||
Returns the leaf before this node or null if this node is the
 first leaf in the tree. 
  
   | |||||||||||
Returns the node that precedes this node in a preorder traversal of
 this node's tree. 
  
   | |||||||||||
Returns the previous sibling of this node in the parent's children
 array. 
  
   | |||||||||||
Returns the root of the tree that contains this node. 
  
   | |||||||||||
Returns the nearest common ancestor to this node and  
  
  aNode. | |||||||||||
Returns the number of siblings of this node. 
  
   | |||||||||||
Returns this node's user object. 
  
   | |||||||||||
Returns the user object path, from the root, to get to this node. 
  
   | |||||||||||
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. | |||||||||||
Returns true if this node has no children. 
  
   | |||||||||||
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. | |||||||||||
Returns true if  
  
  aNode is a child of this node. | |||||||||||
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. | |||||||||||
Returns true if and only if  
  
  aNode is in the same tree
 as this node. | |||||||||||
Returns true if  
  
  anotherNode is a sibling of (has the
 same parent as) this node. | |||||||||||
Returns true if this node is the root of the tree. 
  
   | |||||||||||
Creates and returns an enumeration that follows the path from
  
  
  ancestor to this node. | |||||||||||
Creates and returns an enumeration that traverses the subtree rooted at
 this node in postorder. 
  
   | |||||||||||
Creates and returns an enumeration that traverses the subtree rooted at
 this node in preorder. 
  
   | |||||||||||
Removes the child at the specified index from this node's children
 and sets that node's parent to null. 
  
   | |||||||||||
Removes  
  
  aChild from this node's child array, giving it a
 null parent. | |||||||||||
Removes all of this node's children, setting their parents to null. 
  
   | |||||||||||
Removes the subtree rooted at this node from the tree, giving this
 node a null parent. 
  
   | |||||||||||
Determines whether or not this node is allowed to have children. 
  
   | |||||||||||
Sets this node's parent to  
  
  newParent but does not
 change the parent's child array. | |||||||||||
Sets the user object for this node to  
  
  userObject. | |||||||||||
Returns the result of sending  
  
  toString() to this node's
 user object, or null if this node has no user object. | |||||||||||
| Protected Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Builds the parents of node up to and including the root node,
 where the original node is the last element in the returned array. 
  
   | |||||||||||
| 
  [Expand]
   Inherited Methods  | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
   
From class
  java.lang.Object
 | |||||||||||
   
From interface
  javax.swing.tree.MutableTreeNode
 | |||||||||||
   
From interface
  javax.swing.tree.TreeNode
 | |||||||||||
An enumeration that is always empty. This is used when an enumeration of a leaf node's children is requested.
true if the node is able to have children
Creates a tree node that has no parent and no children, but which allows children.
Creates a tree node with no parent, no children, but which allows children, and initializes it with the specified user object.
| userObject | an Object provided by the user that constitutes the node's data | 
|---|
Creates a tree node with no parent, no children, initialized with the specified user object, and that allows children only if specified.
| userObject | an Object provided by the user that constitutes the node's data | 
|---|---|
| allowsChildren | if true, the node is allowed to have child nodes -- otherwise, it is always a leaf node | 
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.
| newChild | node to add as a child of this node | 
|---|
| IllegalArgumentException | if newChild
                                          is null | 
        
|---|---|
| IllegalStateException | if this node does not allow children | 
Creates and returns an enumeration that traverses the subtree rooted at
 this node in breadth-first order.  The first node returned by the
 enumeration's nextElement() method is this node.
Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.
Creates and returns a forward-order enumeration of this node's children. Modifying this node's child array invalidates any child enumerations created before the modification.
Overridden to make clone public. Returns a shallow copy of this node; the new node has no parent or children and has a reference to the same user object, if any.
Creates and returns an enumeration that traverses the subtree rooted at
 this node in depth-first order.  The first node returned by the
 enumeration's nextElement() method is the leftmost leaf.
 This is the same as a postorder traversal.
Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.
Returns true if this node is allowed to have children.
Returns the child in this node's child array that immediately
 follows aChild, which must be a child of this node.  If
 aChild is the last child, returns null.  This method
 performs a linear search of this node's children for
 aChild and is O(n) where n is the number of children; to
 traverse the entire array of children, use an enumeration instead.
aChild
| IllegalArgumentException | if aChild is
                                  null or is not a child of this node | 
        
|---|
Returns the child at the specified index in this node's child array.
| index | an index into this node's child array | 
|---|
| ArrayIndexOutOfBoundsException | if index
                                          is out of bounds | 
        
|---|
Returns the child in this node's child array that immediately
 precedes aChild, which must be a child of this node.  If
 aChild is the first child, returns null.  This method
 performs a linear search of this node's children for aChild
 and is O(n) where n is the number of children.
aChild
| IllegalArgumentException | if aChild is null
                                          or is not a child of this node | 
        
|---|
Returns the number of children of this node.
Returns the depth of the tree rooted at this node -- the longest
 distance from this node to a leaf.  If this node has no children,
 returns 0.  This operation is much more expensive than
 getLevel() because it must effectively traverse the entire
 tree rooted at this node.
Returns this node's first child. If this node has no children, throws NoSuchElementException.
| NoSuchElementException | if this node has no children | 
|---|
Finds and returns the first leaf that is a descendant of this node -- either this node or its first child's first leaf. Returns this node if it is a leaf.
Returns the index of the specified child in this node's child array.
 If the specified node is not a child of this node, returns
 -1.  This method performs a linear search and is O(n)
 where n is the number of children.
| aChild | the TreeNode to search for among this node's children | 
|---|
-1 if the specified node is a not
          a child of this node
| IllegalArgumentException | if aChild
                                                  is null | 
        
|---|
Returns this node's last child. If this node has no children, throws NoSuchElementException.
| NoSuchElementException | if this node has no children | 
|---|
Finds and returns the last leaf that is a descendant of this node -- either this node or its last child's last leaf. Returns this node if it is a leaf.
Returns the total number of leaves that are descendants of this node.
 If this node is a leaf, returns 1.  This method is O(n)
 where n is the number of descendants of this node.
Returns the number of levels above this node -- the distance from the root to this node. If this node is the root, returns 0.
Returns the leaf after this node or null if this node is the last leaf in the tree.
 In this implementation of the MutableNode interface,
 this operation is very inefficient. In order to determine the
 next node, this method first performs a linear search in the
 parent's child-list in order to find the current node.
 
 That implementation makes the operation suitable for short
 traversals from a known position. But to traverse all of the
 leaves in the tree, you should use depthFirstEnumeration
 to enumerate the nodes in the tree and use isLeaf
 on each node to determine which are leaves.
Returns the node that follows this node in a preorder traversal of this node's tree. Returns null if this node is the last node of the traversal. This is an inefficient way to traverse the entire tree; use an enumeration, instead.
Returns the next sibling of this node in the parent's children array. Returns null if this node has no parent or is the parent's last child. This method performs a linear search that is O(n) where n is the number of children; to traverse the entire array, use the parent's child enumeration instead.
Returns this node's parent or null if this node has no parent.
Returns the path from the root, to get to this node. The last element in the path is this node.
Returns the leaf before this node or null if this node is the first leaf in the tree.
 In this implementation of the MutableNode interface,
 this operation is very inefficient. In order to determine the
 previous node, this method first performs a linear search in the
 parent's child-list in order to find the current node.
 
 That implementation makes the operation suitable for short
 traversals from a known position. But to traverse all of the
 leaves in the tree, you should use depthFirstEnumeration
 to enumerate the nodes in the tree and use isLeaf
 on each node to determine which are leaves.
Returns the node that precedes this node in a preorder traversal of
 this node's tree.  Returns null if this node is the
 first node of the traversal -- the root of the tree.
 This is an inefficient way to
 traverse the entire tree; use an enumeration, instead.
Returns the previous sibling of this node in the parent's children array. Returns null if this node has no parent or is the parent's first child. This method performs a linear search that is O(n) where n is the number of children.
Returns the root of the tree that contains this node. The root is the ancestor with a null parent.
Returns the nearest common ancestor to this node and aNode.
 Returns null, if no such ancestor exists -- if this node and
 aNode are in different trees or if aNode is
 null.  A node is considered an ancestor of itself.
| aNode | node to find common ancestor with | 
|---|
aNode,
          or null if none
Returns the number of siblings of this node.  A node is its own sibling
 (if it has no parent or no siblings, this method returns
 1).
Returns this node's user object.
Returns the user object path, from the root, to get to this node. If some of the TreeNodes in the path have null user objects, the returned path will contain nulls.
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.
 newChild must not be null and must not be an ancestor of
 this node.
| newChild | the MutableTreeNode to insert under this node | 
|---|---|
| childIndex | the index in this node's child array where this node is to be inserted | 
| ArrayIndexOutOfBoundsException | if
                          childIndex is out of bounds | 
        
|---|---|
| IllegalArgumentException | if
                          newChild is null or is an
                          ancestor of this node | 
        
| IllegalStateException | if this node does not allow children | 
Returns true if this node has no children.  To distinguish between
 nodes that have no children and nodes that cannot have
 children (e.g. to distinguish files from empty directories), use this
 method in conjunction with getAllowsChildren
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.  (Note that a node is considered an ancestor of itself.)
 If anotherNode is null, this method returns false.  This
 operation is at worst O(h) where h is the distance from the root to
 this node.
| anotherNode | node to test as an ancestor of this node | 
|---|
anotherNode
Returns true if aNode is a child of this node.  If
 aNode is null, this method returns false.
aNode is a child of this node; false if
                  aNode is null
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.  Note that a node is considered a
 descendant of itself.  If anotherNode is null, returns
 false.  This operation is at worst O(h) where h is the distance from the
 root to anotherNode.
| anotherNode | node to test as descendant of this node | 
|---|
anotherNode
Returns true if and only if aNode is in the same tree
 as this node.  Returns false if aNode is null.
aNode is in the same tree as this node;
          false if aNode is null
Returns true if anotherNode is a sibling of (has the
 same parent as) this node.  A node is its own sibling.  If
 anotherNode is null, returns false.
| anotherNode | node to test as sibling of this node | 
|---|
anotherNode is a sibling of this node
Returns true if this node is the root of the tree. The root is the only node in the tree with a null parent; every tree has exactly one root.
Creates and returns an enumeration that follows the path from
 ancestor to this node.  The enumeration's
 nextElement() method first returns ancestor,
 then the child of ancestor that is an ancestor of this
 node, and so on, and finally returns this node.  Creation of the
 enumeration is O(m) where m is the number of nodes between this node
 and ancestor, inclusive.  Each nextElement()
 message is O(1).
Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.
| IllegalArgumentException | if ancestor is
                                          not an ancestor of this node | 
        
|---|
Creates and returns an enumeration that traverses the subtree rooted at
 this node in postorder.  The first node returned by the enumeration's
 nextElement() method is the leftmost leaf.  This is the
 same as a depth-first traversal.
Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.
Creates and returns an enumeration that traverses the subtree rooted at
 this node in preorder.  The first node returned by the enumeration's
 nextElement() method is this node.
Modifying the tree by inserting, removing, or moving a node invalidates any enumerations created before the modification.
Removes the child at the specified index from this node's children
 and sets that node's parent to null. The child node to remove
 must be a MutableTreeNode.
| childIndex | the index in this node's child array of the child to remove | 
|---|
| ArrayIndexOutOfBoundsException | if
                          childIndex is out of bounds
 | 
        
|---|
Removes aChild from this node's child array, giving it a
 null parent.
| aChild | a child of this node to remove | 
|---|
| IllegalArgumentException | if aChild
                                  is null or is not a child of this node
 | 
        
|---|
Removes all of this node's children, setting their parents to null. If this node has no children, this method does nothing.
Removes the subtree rooted at this node from the tree, giving this node a null parent. Does nothing if this node is the root of its tree.
Determines whether or not this node is allowed to have children.
 If allows is false, all of this node's children are
 removed.
 
Note: By default, a node allows children.
| allows | true if this node is allowed to have children | 
|---|
Sets this node's parent to newParent but does not
 change the parent's child array.  This method is called from
 insert() and remove() to
 reassign a child's parent, it should not be messaged from anywhere
 else.
| newParent | this node's new parent | 
|---|
Sets the user object for this node to userObject.
| userObject | the Object that constitutes this node's user-specified data | 
|---|
Returns the result of sending toString() to this node's
 user object, or null if this node has no user object.
Builds the parents of node up to and including the root node, where the original node is the last element in the returned array. The length of the returned array gives the node's depth in the tree.
| aNode | the TreeNode to get the path for | 
|---|---|
| depth | an int giving the number of steps already taken towards the root (on recursive calls), used to size the returned array |