如何编写树选择侦听器
要检测用户何时选择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);
TreeSelectionModel
interface为选择 Pattern 定义了三个值:
-
DISCONTIGUOUS_TREE_SELECTION
- 这是默认树选择模型的默认 Pattern。使用此 Pattern,可以选择节点的任何组合。
-
SINGLE_TREE_SELECTION
- 这是前面示例使用的 Pattern。一次最多只能选择一个节点。
-
CONTIGUOUS_TREE_SELECTION
- 使用此 Pattern,只能选择相邻行中的节点。
树选择侦听器 API
TreeSelectionListener interface
因为TreeSelectionListener
只有一种方法,所以没有相应的适配器类.
Method | Purpose |
---|---|
valueChanged(TreeSelectionEvent) | 选择更改时调用。 |
Method | Purpose |
---|---|
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 *中) | 返回当前引线路径。 |
使用树选择侦听器的示例
下表列出了使用树选择侦听器的示例。
Example | Where Described | Notes |
---|---|---|
TreeDemo | 如何使用树木 | 树侦听器通过显示适当的 HTML 文档来响应节点单击。 |