The JavaTM Tutorial
Previous Page Lesson Contents Next Page Start of Tutorial > Start of Trail > Start of Lesson Search
Feedback Form

Trail: Creating a GUI with JFC/Swing
Lesson: Writing Event Listeners

How to Write a Tree Model Listener

By implementing a tree model listener, you can detect when the data displayed by a tree(in the Creating a GUI with JFC/Swing trail) 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(in the Creating a GUI with JFC/Swing trail).

The Tree Model Event API

The TreeModelListener(in the API reference documentation) 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(in the API reference documentation) 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(in the API reference documentation) object.
Also useful is the getSource method, which TreeModelEvent inherits from EventObject(in the API reference documentation).

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(in a .java source file). The example also relies on DynamicTreeDemo(in a .java source file). The code is discussed in Dynamically Changing a Tree(in the Creating a GUI with JFC/Swing trail).

Previous Page Lesson Contents Next Page Start of Tutorial > Start of Trail > Start of Lesson Search
Feedback Form