2013-02-21 43 views
1

我遇到了SWT樹問題。 我的情況是這樣的:我有一個SWT樹,其中包含許多TreeItems(日誌條目),其中也包含TreeItems。那些日誌條目具有非常長的消息,根本無法在TreeColumns中顯示。所以我的想法是:在樹上添加一個Listener,DoubleClick打開一個新的對話框,顯示條目的詳細信息。到現在爲止還挺好。 如果我雙擊一個項目,它會起作用。但是:如果我雙擊父項目,它會展開(這很好),但是我的雙擊Listener也是活動的,然後對話框將打開。 這不是,我想要的。SWT:通過雙擊來防止樹擴大?

因此,這個問題有兩種解決方案: 1)自動阻止Tree通過雙擊展開/摺疊,並自己實現該方法或者2)識別該項目已擴展,並且該事件必須被中止。

我真的不知道該怎麼做1或2.你們知道嗎?

在此先感謝。

回答

1

如果您正在使用TreeViewer,你可以利用IOpenListener

treeViewer.addOpenListener(new IOpenListener() { 

     @Override 
     public void open(OpenEvent event) { 
} 
} 
+0

謝謝,這工作! 我建樹並在最後,我只是把一個: TreeViewer電視=新的TreeViewer(樹); 並添加您的代碼 - 太棒了! – user2090321 2013-03-08 10:33:42

0

有它的效果要好得多另一種解決方案。

從'sambi reddy'解決方案的問題是,樹被阻止通過雙擊擴展,但通過在左側交叉點上單擊也阻止了擴展。

我的解決方案(很好用)很簡單:我添加了一個TreeListener,它偵聽展開/摺疊樹並從MouseDoubleClick-Listener中移除展開/搭接實現。

沒有JFace TreeViewer - 它工作正常。

1

我發現上面的答案是相當虛假的。以下爲我工作:

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

我知道,它沒有任何意義;爲解釋問題的真正原因,以及爲什麼上述內容是修復,請參閱Eclipse社區論壇中的此討論:Disabling Treeviewer doubleclick expand/collapse