SWT:通过双击阻止树扩展?

我有SWT树的问题。 我的情况是这样的:我有一个SWT树,它包含许多TreeItems(日志条目),它们也包含TreeItems。 这些日志条目有很长的消息,根本无法在TreeColumns中显示。 所以我的想法是:在树上添加一个监听器,由DoubleClick打开一个新的Dialog,显示条目的详细信息。 到现在为止还挺好。 如果我双击一个项目,它就可以了。 但是:如果我双击一个父项,它将展开(这很好),但我的双击监听器也是活动的,然后对话框将打开。 那不是,我想要的。

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

我真的不知道如何做1或2.你们知道吗?

提前致谢。

如果您使用的是TreeViewer ,则可以使用IOpenListener

 treeViewer.addOpenListener(new IOpenListener() { @Override public void open(OpenEvent event) { } } 

我觉得上面的答案是假的。 以下对我有用:

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

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

还有另一种解决方案可以更好地运作。

来自’sambi reddy’的解决方案的问题在于,通过双击阻止了树的扩展,但是通过在左侧交叉点上点击也阻止了树的扩展。

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

没有JFace TreeViewer – 它工作正常。