How to Write a Tree Model Listener
By implementing a tree model listener,
you can detect when the data displayed by a
tree
changes.
You might use a tree model listener
to detect when the user edits tree nodes.
To see an example and discussion of doing so,
read
Dynamically Changing a Tree
.
The
TreeModelListener
interface contains four methods:
-
void treeNodesChanged(TreeModelEvent)
- Called when one or more sibling nodes have changed in some way.
-
void treeNodesInserted(TreeModelEvent)
- Called after nodes have been inserted into the tree.
-
void treeNodesRemoved(TreeModelEvent)
- Called after nodes have been removed from the tree.
-
void treeNodesStructureChanged(TreeModelEvent)
- Called after the tree's structure has drastically changed.
Each tree model event method has a single parameter: a
TreeModelEvent
object.
The TreeModelEvent class defines the following useful method:
-
int[] getChildIndices()
- For
treeNodesChanged,
treeNodesInserted, and
treeNodesRemoved,
returns the indices of the changed, inserted, or deleted nodes,
respectively.
Returns nothing useful for treeStructureChanged.
-
Object[] getChildren()
- Returns the objects corresponding to the child indices.
-
Object[] getPath()
- Returns the path to the parent of the changed, inserted,
or deleted nodes.
For
treeStructureChanged,
returns the path to the node beneath which
the structure has changed.
-
TreePath getTreePath()
- Returns the same thing as
getPath,
but as a
TreePath
object.
Also useful is the getSource method,
which TreeModelEvent inherits from
EventObject
.
Examples that Use Tree Model Listeners
The DynamicTree example
implements a tree model listener
to detect when the user has edited a node's data.
You can find the listener's code in
DynamicTree.java.
The example also relies on
DynamicTreeDemo.java.
The code is discussed in
Dynamically Changing a Tree
.