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 Expansion Listener

Sometimes when using a tree (in the Creating a GUI with JFC/Swing trail), you might need to react when a branch becomes expanded or collapsed. For example, you might need to load or save data. Or you might need to prevent the user from expanding a particular node.

Two kinds of listeners report expansion and collapse occurrences: tree expansion listeners and tree-will-expand listeners. This page discusses the former. A tree expansion listener detects when an expansion or collapse has happened. In general, you should implement a tree expansion listener unless you might need to prevent an expansion or collapse from happening.

Tree-will-expand listeners are discussed in How to Write a Tree-Will-Expand Listener. A tree-will-expand listener detects when an expansion or collapse is about to happen.

The following example demonstrates a simple tree expansion listener. The text area at the bottom of the window displays a message every time a tree expansion event occurs. It's a straightforward, simple demo. To see a more interesting version that can veto expansions, see How to Write a Tree-Will-Expand Listener.

[PENDING: updated screenshot with sample output forthcoming.]


Try this: 
  1. Run TreeExpandEventDemo using JavaTM Web Start. Or, to compile and run the example yourself, consult the example index.
  2. Expand a node. A tree-expanded event is fired.
  3. Collapse the node. A tree-collapsed event is fired.

The following code shows how the program handles expansion events. You can find all the example's source code in TreeExpandEventDemo.java (in a .java source file).

public class TreeExpandEventDemo ... {
    ...
    void saySomething(String eventDescription, TreeExpansionEvent e) {
        textArea.append(eventDescription + "; "
                        + "path = " + e.getPath()
                        + newline);
    }

    class DemoArea ... implements TreeExpansionListener {
        ...
        public DemoArea() {
            ...
            tree.addTreeExpansionListener(this);
            ...
        }
        ...
        // Required by TreeExpansionListener interface.
        public void treeExpanded(TreeExpansionEvent e) {
            saySomething("Tree-expanded event detected", e);
        }

        // Required by TreeExpansionListener interface.
        public void treeCollapsed(TreeExpansionEvent e) {
            saySomething("Tree-collapsed event detected", e);
        }
    }
}

The Tree Expansion Listener API

The TreeExpansionListener Interface

TreeExpansionListener has no adapter class.
Method Purpose
treeCollapsed(TreeExpansionEvent) Called just after a tree node collapses.
treeExpanded(TreeExpansionEvent) Called just after a tree node expands.

The TreeExpansionEvent API

Method Purpose
Object getSource() Return the object that fired the event.
TreePath getPath() Returns a TreePath (in the API reference documentation) object that identifies each node from the root of the tree to the collapsed/expanded node, inclusive.

Examples that Use Tree Expansion Listeners

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

Example Where Described Notes
TreeExpandEventDemo This section Displays a message whenever a tree expansion event occurs.
TreeExpandEventDemo2 How to Write a Tree-Will-Expand Listener Adds a tree-will-expand listener to TreeExpandEventDemo.


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

Copyright 1995-2004 Sun Microsystems, Inc. All rights reserved.