The Java TM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search

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 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 Tree Model Event API

> 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`. The example also relies on `DynamicTreeDemo`. The code is discussed in Dynamically Changing a Tree.

| Start of Tutorial > Start of Trail > Start of Lesson | Search