0

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

如何从TreeViewerStructuredViewer不触发selectionChanged()其他视图中选择项目?

4

1 回答 1

3

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

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

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

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

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


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

于 2014-06-16T14:08:29.560 回答