【发布时间】:2015-03-13 09:55:33
【问题描述】:
我已经实现了一个 TreeViewer,并添加了一个双击监听器。这个双击监听器应该展开/折叠一个节点。
treeViewer = new TreeViewer(component, SWT.BORDER | SWT.MULTI );
treeViewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent e) {
final IStructuredSelection selection = (IStructuredSelection) e
.getSelection();
if (selection == null || selection.isEmpty())
return;
final Object sel = selection.getFirstElement();
TreeNode selNode = (TreeNode) sel;
if (treeViewer.getExpandedState(sel)) {
treeViewer.collapseToLevel(sel, 1);
} else {
treeViewer.expandToLevel(sel, 1);
}
}
});
现在,如果我将 TreeViewer 更改为 FULL_SELECTION,例如...
treeViewer = new TreeViewer(component, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
这种行为变得奇怪。
双击显示标签的节点时,一切正常。但是当点击该行时,离标签稍远一点的节点同时展开/折叠,根本没有改变。
调试它我发现,在我收到双击事件之前,有另一个事件被触发(或者在我处理它之前正在监听它),展开/折叠特定节点。禁用监听器我能够摆脱这种行为。但是当双击标签时,这再次禁用了节点的扩展。
我在调试时在 eclipse 中看到了类似的行为,想知道这是一个已知的错误还是更糟糕的预期行为?
任何建议都表示赞赏并提前感谢!
【问题讨论】: