我正在开发一个eclipse RCP项目。它有TreeViewer
的几个视图,我使用selectionChanged()
方法来处理选择事件。但是,有时我需要以编程方式设置选择。为此,在selectionChanged()
方法中,我调用setSelection()
TreeViewer
方法来设置所需的选择。此方法会触发所有视图的selectionChanged()
方法,从而导致对selectionChanged()
的循环调用。
如何选择TreeViewer
或StructuredViewer
中的某个项目,而不会针对其他观看次点击selectionChanged()
?
答案 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;
}
};
这不是一个非常漂亮的解决方案,但确实有效。
期待这里的替代解决方案,因为这一直困扰着我一段时间。