如何编写一个树状扩展侦听器

  • tree-will-expand *侦听器可防止tree节点扩展或崩溃。要在发生扩展或崩溃后立即通知,您应该使用树扩展侦听器。

该演示向如何编写树扩展侦听器中讨论的TreeExpandEventDemo示例添加了一个树状扩展侦听器。此处添加的代码演示* tree-will-expand *侦听器可防止节点扩展和折叠:每次try扩展节点时,侦听器都会提示您进行确认。

TreeExpandEventDemo2.html

Try this:

  • 单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行 TreeExpandEventDemo2.另外,要自己编译和运行示例,请查阅example index

  • 单击“ Potrero Hill”节点左侧的图形。这告诉树您要扩展节点。
    出现一个对话框,询问您是否真的要扩展该节点。

  • 单击“扩展”或关闭对话框。
    文本区域中的消息告诉您已经发生了 tree-will-expand 事件和 tree-expanded 事件。每条消息的末尾是扩展节点的路径。

  • try扩展另一个节点,但是这次在对话框中按“取消扩展”按钮。
    该节点不会扩展。文本区域中的消息告诉您发生了树将扩展事件,并且您取消了树扩展。

  • 折叠 Potrero Hill 节点。
    该节点折叠而没有出现对话框,因为事件处理程序的treeWillCollapse方法使折叠无争议地发生。

以下代码段显示了此程序添加到TreeExpandEventDemo的代码。粗线阻止了树扩展的发生。您可以在TreeExpandEventDemo2.java中找到该演示的所有源代码。

public class TreeExpandEventDemo2 ... {
    ...
    class DemoArea ... implements ... TreeWillExpandListener {
        ...
        public DemoArea() {
            ...
            tree.addTreeWillExpandListener(this);
            ...
        }
        ...
        //Required by TreeWillExpandListener interface.
        public void treeWillExpand(TreeExpansionEvent e) 
                    throws ExpandVetoException {
            saySomething("Tree-will-expand event detected", e);
            //...show a dialog...
            if (/* user said to cancel the expansion */) {
                //Cancel expansion.
                saySomething("Tree expansion cancelled", e);
                throw new ExpandVetoException(e);
            }
        }

        //Required by TreeWillExpandListener interface.
        public void treeWillCollapse(TreeExpansionEvent e) {
            saySomething("Tree-will-collapse event detected", e);
        }
        ...
    }
}

Tree-Will-Expand 监听器 API

TreeWillExpandListener interface

  • TreeWillExpandListener没有适配器类.*
MethodPurpose
treeWillCollapse(TreeExpansionEvent)在树节点崩溃之前调用。为防止崩溃,此方法的实现应引发ExpandVetoException事件。
treeWillExpand(TreeExpansionEvent)在树节点扩展之前调用。为了防止发生扩展,此方法的实现应引发ExpandVetoException事件。

有关上述方法的TreeExpansionEvent参数的信息,请参见树扩展事件 API

使用树状扩展侦听器的示例

本节中的“ TreeExpandEventDemo2”是我们唯一使用树式扩展侦听器的示例。