1

我对 SWT 树有疑问。我的情况是这样的:我有一个 SWT 树,其中包含许多 TreeItems(日志条目),其中也包含 TreeItems。这些日志条目的消息很长,根本无法在 TreeColumns 中显示。所以我的想法是:向树中添加一个侦听器,它会通过 DoubleClick 打开一个新对话框,其中显示条目的详细信息。到现在为止还挺好。如果我双击一个项目,它可以工作。但是:如果我双击父项,它将展开(这很好),但是我的双击监听器也处于活动状态,并且对话框将打开。这不是我想要的。

因此,该问题有两种解决方案:1)防止树通过双击自动展开/折叠并自行实现该方法或2)识别项目已展开并且必须中止事件。

我真的不知道怎么做 1 或 2。你们知道吗?

提前致谢。

4

3 回答 3

1

如果你正在使用TreeViewer,你可以利用IOpenListener

treeViewer.addOpenListener(new IOpenListener() {

      @Override
      public void open(OpenEvent event) {
}
}
于 2013-02-21T22:35:32.910 回答
1

我发现上面的答案是相当虚假的。以下对我有用:

treeViewer.getControl().addListener(SWT.MeasureItem, new Listener(){
    @Override
    public void handleEvent(Event event) {
    }});

我知道,这没有任何意义;有关问题的真正原因的解释,以及上述问题的修复原因,请参阅 Eclipse 社区论坛中的讨论:禁用 Treeviewer 双击展开/折叠

于 2013-11-04T08:17:10.553 回答
0

还有另一种效果更好的解决方案。

'sambi reddy' 的解决方案的问题是,双击阻止了树的扩展,但单击左侧的十字也阻止了树的扩展。

我的解决方案(效果很好)很简单:我添加了一个 TreeListener,它监听树的展开/折叠,并从 MouseDoubleClick-Listener 中删除了展开/折叠实现。

没有 JFace TreeViewer - 它工作正常。

于 2013-03-11T14:49:15.480 回答