如何在不触发selectionChanged()的情况下为treeviewer设置选择?

时间:2014-06-16 14:03:06

标签: java swt eclipse-rcp jface treeviewer

我正在开发一个eclipse RCP项目。它有TreeViewer的几个视图,我使用selectionChanged()方法来处理选择事件。但是,有时我需要以编程方式设置选择。为此,在selectionChanged()方法中,我调用setSelection() TreeViewer方法来设置所需的选择。此方法会触发所有视图的selectionChanged()方法,从而导致对selectionChanged()的循环调用。

如何选择TreeViewerStructuredViewer中的某个项目,而不会针对其他观看次点击selectionChanged()

1 个答案:

答案 0 :(得分:3)

好吧,创建一个触发你当前所在Listener的事件总是很棘手。我通常做的是这样的事情:

Listener listener = new Listener()
{
    private boolean ignore = false;

    @Override
    public void handleEvent(Event e)
    {
        if(ignore)
            return;

        ignore = true;
        doPotentiallyCyclicStuff();
        ignore = false;
    }
};

这不是一个非常漂亮的解决方案,但确实有效。


期待这里的替代解决方案,因为这一直困扰着我一段时间。