public interface TreeModel
JTree
.
JTree
and its related classes make extensive use of
TreePath
s for identifying nodes in the TreeModel
.
If a TreeModel
returns the same object, as compared by
equals
, at two different indices under the same parent
than the resulting TreePath
objects will be considered equal
as well. Some implementations may assume that if two
TreePath
s are equal, they identify the same node. If this
condition is not met, painting problems and other oddities may result.
In other words, if getChild
for a given parent returns
the same Object (as determined by equals
) problems may
result, and it is recommended you avoid doing this.
Similarly JTree
and its related classes place
TreePath
s in Map
s. As such if
a node is requested twice, the return values must be equal
(using the equals
method) and have the same
hashCode
.
For further information on tree models, including an example of a custom implementation, see How to Use Trees in The Java Tutorial.
TreePath
Modifier and Type | Method and Description |
---|---|
void |
addTreeModelListener(TreeModelListener l)
Adds a listener for the
TreeModelEvent
posted after the tree changes. |
Object |
getChild(Object parent,
int index)
Returns the child of
parent at index index
in the parent's
child array. |
int |
getChildCount(Object parent)
Returns the number of children of
parent . |
int |
getIndexOfChild(Object parent,
Object child)
Returns the index of child in parent.
|
Object |
getRoot()
Returns the root of the tree.
|
boolean |
isLeaf(Object node)
Returns
true if node is a leaf. |
void |
removeTreeModelListener(TreeModelListener l)
Removes a listener previously added with
addTreeModelListener . |
void |
valueForPathChanged(TreePath path,
Object newValue)
Messaged when the user has altered the value for the item identified
by
path to newValue . |
Object getRoot()
null
only if the tree has no nodes.Object getChild(Object parent, int index)
parent
at index index
in the parent's
child array. parent
must be a node previously obtained
from this data source. This should not return null
if index
is a valid index for parent
(that is index >= 0 &&
index < getChildCount(parent
)).parent
- a node in the tree, obtained from this data sourceparent
at index index
int getChildCount(Object parent)
parent
.
Returns 0 if the node
is a leaf or if it has no children. parent
must be a node
previously obtained from this data source.parent
- a node in the tree, obtained from this data sourceparent
boolean isLeaf(Object node)
true
if node
is a leaf.
It is possible for this method to return false
even if node
has no children.
A directory in a filesystem, for example,
may contain no files; the node representing
the directory is not a leaf, but it also has no children.node
- a node in the tree, obtained from this data sourcenode
is a leafvoid valueForPathChanged(TreePath path, Object newValue)
path
to newValue
.
If newValue
signifies a truly new value
the model should post a treeNodesChanged
event.path
- path to the node that the user has alterednewValue
- the new value from the TreeCellEditorint getIndexOfChild(Object parent, Object child)
parent
or child
is null
, returns -1.
If either parent
or child
don't
belong to this tree model, returns -1.parent
- a node in the tree, obtained from this data sourcechild
- the node we are interested inchild
or parent
are null
or don't belong to this tree modelvoid addTreeModelListener(TreeModelListener l)
TreeModelEvent
posted after the tree changes.l
- the listener to addremoveTreeModelListener(javax.swing.event.TreeModelListener)
void removeTreeModelListener(TreeModelListener l)
addTreeModelListener
.l
- the listener to removeaddTreeModelListener(javax.swing.event.TreeModelListener)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2022, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.