本Java教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关Java SE 9及其后续版本中更新的语言功能的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能和已删除或弃用选项的信息,请参阅JDK发行说明。
tree-will-expand监听器可以阻止树节点的展开或折叠。如果想在展开或折叠发生后收到通知,应该使用树展开监听器。
此演示向在如何编写树展开监听器中讨论的TreeExpandEventDemo示例中添加了一个tree-will-expand监听器。此处添加的代码演示了tree-will-expand监听器可以阻止节点的展开和折叠:每次尝试展开节点时,监听器都会提示您进行确认。
treeWillCollapse方法允许折叠发生,无需竞争。以下代码片段显示了此程序添加到TreeExpandEventDemo中的代码。加粗的那一行阻止了树的展开。您可以在TreeExpandEventDemo2.java中找到所有演示的源代码。
public class TreeExpandEventDemo2 ... {
...
class DemoArea ... implements ... TreeWillExpandListener {
...
public DemoArea() {
...
tree.addTreeWillExpandListener(this);
...
}
...
//实现TreeWillExpandListener接口所必需的方法
public void treeWillExpand(TreeExpansionEvent e)
throws ExpandVetoException {
saySomething("检测到树节点将展开的事件", e);
//...显示一个对话框...
if (/* 用户取消了展开 */) {
//取消展开
saySomething("取消树节点展开", e);
throw new ExpandVetoException(e);
}
}
//实现TreeWillExpandListener接口所必需的方法
public void treeWillCollapse(TreeExpansionEvent e) {
saySomething("检测到树节点将折叠的事件", e);
}
...
}
}
TreeWillExpandListener 没有适配器类。
| 方法 | 用途 |
|---|---|
| treeWillCollapse(TreeExpansionEvent) | 在树节点折叠之前调用。为了阻止折叠的发生,你的方法实现应该抛出一个 ExpandVetoException 事件。 |
| treeWillExpand(TreeExpansionEvent) | 在树节点展开之前调用。为了阻止展开的发生,你的方法实现应该抛出一个 ExpandVetoException 事件。 |
有关前述方法的参数 TreeExpansionEvent 的信息,请参见 树节点展开事件 API。
TreeExpandEventDemo2,在本节中展示的示例,是唯一一个使用树将要展开监听器的示例。