0

私はEclipse RCPプロジェクトに取り組んでいます。いくつかのビューがTreeViewerあり、メソッドを使用selectionChanged()して選択イベントを処理します。ただし、プログラムで選択を設定する必要がある場合もあります。そのために、メソッドでメソッドselectionChanged()を呼び出して、目的の選択を設定します。このメソッドはすべてのビューのメソッドを起動するため、 への循環呼び出しが発生します。setSelection()TreeViewerselectionChanged()selectionChanged()

他のビューで発火せずにTreeViewerアイテムを選択するにはどうすればよいですか?StructuredViewerselectionChanged()

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 に答える