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

To detect when the user selects a node in a tree (in the Creating a GUI with JFC/Swing trail), you need to register a tree selection listener. Here is an example, taken from the TreeDemo example discussed in Responding to Node Selection (in the Creating a GUI with JFC/Swing trail), of detecting node selection in a tree that can have at most one node selected at a time:

[PENDING: Update this code snippet after example has been modified to remove the inner class.]

tree.addTreeSelectionListener(new TreeSelectionListener() {
    public void valueChanged(TreeSelectionEvent e) {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode)
                           tree.getLastSelectedPathComponent();

        if (node == null) return;

        Object nodeInfo = node.getUserObject();
	...
        /* React to the node selection. */
	...
    }
});
To specify that the tree should support single selection, the program uses this code:
tree.getSelectionModel().setSelectionMode
        (TreeSelectionModel.SINGLE_TREE_SELECTION);
The TreeSelectionModel interface defines three values for the selection mode:
DISCONTIGUOUS_TREE_SELECTION
This is the default mode for the default tree selection model. With this mode, any combination of nodes can be selected.
SINGLE_TREE_SELECTION
This is the mode used by the preceding example. At most one node can be selected at a time.
CONTIGUOUS_TREE_SELECTION
With this mode, only nodes in adjoining rows can be selected.

The Tree Selection Listener API

The TreeSelectionListener Interface

Because TreeSelectionListener has only one method, it has no corresponding adapter class.
Method Purpose
valueChanged(TreeSelectionEvent) Called whenever the selection changes.

The TreeExpansionEvent API

Method Purpose
Object getSource()
(in java.util.EventObject)
Return the object that fired the event.
TreePath getNewLeadSelectionPath() Return the current lead path.
TreePath getOldLeadSelectionPath() Return the path that was previously the lead path.
TreePath getPath() Return the first path element.
TreePath[] getPaths() Return the paths that have been added or removed from the selection.
boolean isAddedPath() Return true if the first path element has been added to the selection. Returns false if the first path has been removed from the selection.
boolean isAddedPath(int) Return true if the path specified by the index was added to the selection.
boolean isAddedPath(TreePath) Return true if the specified path was added to the selection.
Object getLastSelectedPathComponent() Return the last path component in the first node of the current selection.
TreePath getLeadSelectionPath()
(in JTree)
Return the current lead path.

Examples that Use Tree Selection Listeners

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

Example Where Described Notes
TreeDemo
[PENDING: When this example has been updated to 1.4, this link will point to it.]
How to Use Trees (in the Creating a GUI with JFC/Swing trail) The tree listener responds to node clicks by showing the appropriate HTML document.


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.