如何编写一个树状扩展侦听器
- tree-will-expand *侦听器可防止tree节点扩展或崩溃。要在发生扩展或崩溃后立即通知,您应该使用树扩展侦听器。
该演示向如何编写树扩展侦听器中讨论的TreeExpandEventDemo
示例添加了一个树状扩展侦听器。此处添加的代码演示* tree-will-expand *侦听器可防止节点扩展和折叠:每次try扩展节点时,侦听器都会提示您进行确认。
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
没有适配器类.*
Method | Purpose |
---|---|
treeWillCollapse(TreeExpansionEvent) | 在树节点崩溃之前调用。为防止崩溃,此方法的实现应引发ExpandVetoException事件。 |
treeWillExpand(TreeExpansionEvent) | 在树节点扩展之前调用。为了防止发生扩展,此方法的实现应引发ExpandVetoException事件。 |
有关上述方法的TreeExpansionEvent参数的信息,请参见树扩展事件 API。
使用树状扩展侦听器的示例
本节中的“ TreeExpandEventDemo2”是我们唯一使用树式扩展侦听器的示例。