Java教程是为JDK 8编写的。本页面描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9及后续版本中更新的语言功能的摘要。
请参阅JDK发行说明,了解有关所有JDK版本的新功能、增强功能以及删除或弃用选项的信息。
要检测用户在树中选择节点的时候,需要注册一个树选择监听器。下面是一个示例,来自于在响应节点选择中讨论的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
由于TreeSelectionListener
只有一个方法,所以它没有对应的适配器类。
方法 | 目的 |
---|---|
valueChanged(TreeSelectionEvent) | 当选择发生变化时调用。 |
方法 | 目的 |
---|---|
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文档响应节点点击。 |