如何编写树扩展监听器

原文: https://docs.oracle.com/javase/tutorial/uiswing/events/treeexpansionlistener.html

有时使用时,您可能需要在分支展开或折叠时做出反应。例如,您可能需要加载或保存数据。

两种监听器报告扩展和崩溃事件:树扩展监听器和树将扩展监听器。本页讨论树扩展监听器。有关 Tree-Will-Expand 监听器的说明,请参见如何编写树将扩展监听器

树扩展监听器检测何时发生了扩展或崩溃。通常,除非需要防止扩展或崩溃,否则应实现树扩展监听器。

此示例演示了一个简单的树扩展监听器。每次发生树扩展事件时,窗口底部的文本区域都会显示一条消息。这是一个简单明了的简单演示。要查看可以否决扩展的更有趣的版本,请参阅如何编写树将扩展监听器

TreeExpandEventDemo.html


Try this:

  1. 单击“启动”按钮以使用 Java™Web Start下载 JDK 7 或更高版本)运行 TreeExpandEventDemo。或者,要自己编译并运行示例,请参考示例索引Launches the TreeExpandEventDemo example

  2. 展开节点。触发了树扩展事件。

  3. 折叠节点。触发了树崩溃的事件。

以下代码显示程序如何处理扩展事件。您可以在 TreeExpandEventDemo.java 中找到此示例的源代码。

  1. public class TreeExpandEventDemo ... {
  2. ...
  3. void saySomething(String eventDescription, TreeExpansionEvent e) {
  4. textArea.append(eventDescription + "; "
  5. + "path = " + e.getPath()
  6. + newline);
  7. }
  8. class DemoArea ... implements TreeExpansionListener {
  9. ...
  10. public DemoArea() {
  11. ...
  12. tree.addTreeExpansionListener(this);
  13. ...
  14. }
  15. ...
  16. // Required by TreeExpansionListener interface.
  17. public void treeExpanded(TreeExpansionEvent e) {
  18. saySomething("Tree-expanded event detected", e);
  19. }
  20. // Required by TreeExpansionListener interface.
  21. public void treeCollapsed(TreeExpansionEvent e) {
  22. saySomething("Tree-collapsed event detected", e);
  23. }
  24. }
  25. }

TreeExpansionListener没有适配器类。

方法 目的
treeCollapsed(TreeExpansionEvent) 在树节点崩溃后调用。
treeExpanded(TreeExpansionEvent) 在树节点扩展后调用。
方法 目的
对象 getSource() 返回触发事件的对象。
TreePath getPath() 返回 TreePath 对象,该对象标识从树的根到折叠/展开节点的每个节点(包括)。

下表列出了使用树扩展监听器的示例。

在哪里描述 笔记
TreeExpandEventDemo 这个部分 每当发生树扩展事件时显示消息。
TreeExpandEventDemo2 如何编写树将扩展监听器 TreeExpandEventDemo添加 tree-will-expand 监听器。