文档

Java™教程
隐藏目录
如何编写Tree Selection监听器
指南:使用Swing创建GUI
课程:编写事件监听器
章节:实现常用事件的监听器

如何编写树选择监听器

要检测用户在树中选择节点的时候,需要注册一个树选择监听器。下面是一个示例,来自于在响应节点选择中讨论的TreeDemo示例,用于检测树中的节点选择,这个树一次最多只能选择一个节点:

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

    /* 如果没有选择任何节点 */ 
        if (node == null) return;

    /* 获取被选择的节点 */ 
        Object nodeInfo = node.getUserObject();
        ...
    /* 响应节点选择 */
        ...
    }
});

要指定树支持单选模式,程序使用以下代码:

tree.getSelectionModel().setSelectionMode
        (TreeSelectionModel.SINGLE_TREE_SELECTION);

TreeSelectionModel接口定义了三种选择模式的值:

DISCONTIGUOUS_TREE_SELECTION
这是默认的树选择模型的模式。在这个模式下,可以选择任意组合的节点。
SINGLE_TREE_SELECTION
这是前面示例中使用的模式。一次最多只能选择一个节点。
CONTIGUOUS_TREE_SELECTION
在这个模式下,只能选择相邻行中的节点。

树选择监听器 API

树选择监听器接口

由于TreeSelectionListener只有一个方法,所以它没有对应的适配器类。

方法 目的
valueChanged(TreeSelectionEvent) 当选择发生变化时调用。

树选择事件 API

方法 目的
Object getSource()
(java.util.EventObject 中)
返回触发事件的对象。
TreePath getNewLeadSelectionPath() 返回当前的主导路径。
TreePath getOldLeadSelectionPath() 返回先前的主导路径。
TreePath getPath() 返回第一个路径元素。
TreePath[] getPaths() 返回已添加或已从选择中移除的路径。
boolean isAddedPath() 如果第一个路径元素已添加到选择中,则返回true。如果第一个路径已从选择中移除,则返回false。
boolean isAddedPath(int) 如果指定索引处的路径已添加到选择中,则返回true。
boolean isAddedPath(TreePath) 如果指定路径已添加到选择中,则返回true。
Object getLastSelectedPathComponent() 返回当前选择的第一个节点中的最后一个路径组件。
TreePath getLeadSelectionPath()
(JTree 中)
返回当前的主导路径。

使用树选择监听器的示例

下表列出了使用树选择监听器的示例。

示例 描述位置 备注
TreeDemo
如何使用树 树监听器通过显示适当的HTML文档响应节点点击。

上一页: 如何编写树模型监听器
下一页: 如何编写树展开监听器