如何编写树选择侦听器

要检测用户何时选择tree中的节点,您需要注册树选择侦听器。这是从响应节点选择中讨论的TreeDemo示例中获取的示例,该示例检测树中一次最多可以选择一个节点的节点选择:

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

    /* if nothing is selected */ 
        if (node == null) return;

    /* retrieve the node that was selected */ 
        Object nodeInfo = node.getUserObject();
        ...
    /* React to the node selection. */
        ...
    }
});

为了指定树应支持单选,该程序使用以下代码:

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

TreeSelectionModelinterface为选择 Pattern 定义了三个值:

  • DISCONTIGUOUS_TREE_SELECTION

    • 这是默认树选择模型的默认 Pattern。使用此 Pattern,可以选择节点的任何组合。
  • SINGLE_TREE_SELECTION

    • 这是前面示例使用的 Pattern。一次最多只能选择一个节点。
  • CONTIGUOUS_TREE_SELECTION

    • 使用此 Pattern,只能选择相邻行中的节点。

树选择侦听器 API

TreeSelectionListener interface

因为TreeSelectionListener只有一种方法,所以没有相应的适配器类.

MethodPurpose
valueChanged(TreeSelectionEvent)选择更改时调用。

TreeSelectionEvent API

MethodPurpose
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 *中)
返回当前引线路径。

使用树选择侦听器的示例

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

ExampleWhere DescribedNotes
TreeDemo如何使用树木树侦听器通过显示适当的 HTML 文档来响应节点单击。