Download the JDK
Search the Tutorials
Hide the TOC
Trail: Creating a GUI with JFC/Swing
Lesson: Writing Event Listeners
Section: Implementing Listeners for Commonly Handled Events
Writing Event Listeners
Introduction to Event Listeners
General Information about Writing Event Listeners
Listeners Supported by Swing Components
Implementing Listeners for Commonly Handled Events
How to Write an Action Listener
How to Write a Caret Listener
How to Write a Change Listener
How to Write a Component Listener
How to Write a Container Listener
How to Write a Document Listener
How to Write a Focus Listener
How to Write an Internal Frame Listener
How to Write an Item Listener
How to Write a Key Listener
How to Write a List Data Listener
How to Write a List Selection Listener
How to Write a Mouse Listener
How to Write a Mouse-Motion Listener
How to Write a Mouse-Wheel Listener
How to Write a Property Change Listener
How to Write a Table Model Listener
How to Write a Tree Expansion Listener
How to Write a Tree Model Listener
How to Write a Tree Selection Listener
How to Write a Tree-Will-Expand Listener
How to Write an Undoable Edit Listener
How to Write Window Listeners
Listener API Table
Solving Common Event-Handling Problems
Home Page > Creating a GUI with JFC/Swing > 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 can use a tree model listener to detect when the user edits tree nodes. All notifications describe changes relative to a node in the tree. For details, read Dynamically Changing a Tree.

### The Tree Model Listener API

> The TreeModelListener Interface

> `TreeModelListener` has no adapter class.

> Method | Purpose
> --- | ---
> treeNodesChanged(TreeModelEvent) | Called when one or more sibling nodes have changed in some way.
> treeNodesInserted(TreeModelEvent) | Called after nodes have been inserted into the tree.
> treeNodesRemoved(TreeModelEvent) | Called after nodes have been removed from the tree.
> treeStructureChanged(TreeModelEvent) | Called after the tree's structure has drastically changed from the current node on down. This event applies to all nodes connected to this node.

> The TreeModelEvent API

> Method | Purpose
> --- | ---
> Object getSource() (in `java.util.EventObject`) | Return the object that fired the event.
> 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.

### Examples that Use Tree Model Listeners

> The following table lists the examples that use tree expansion listeners.

> Example | Where Described | Notes
> --- | --- | ---
> `DynamicTreeDemo` | How to Use Trees | The `DynamicTree` class implements a tree model listener to detect when the user has edited a node's data.

Previous page: How to Write a Tree Expansion Listener
Next page: How to Write a Tree Selection Listener