2011-12-21 156 views
0

我是新的Eclipse日食,以及事實上,以及Java也。有一個非常基本的問題。我有一個JFace TreeViewer。我想擴展一個特定的節點。問題是我只有節點的名稱。除此之外沒有任何信息。 我試過使用treeItem,比較它的字符串與我擁有的節點名稱,因此我得到了節點。我試着在樹的contentprovider中擴展它。但我沒有得到所需的輸出。當我在日誌中檢查它時,我發現它已被擴展,但不會在查看器中顯示。我在contentprovider中的display.asyncExec方法中執行此操作。擴大樹節點

我希望問題很清楚。

+0

你是什麼意思「擴展它在contentprovider」?在[TreeViewer]中有'expandToLevel(Object elementOrTreePath,int level)'方法(http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface /viewers/TreeViewer.html),這是否工作? – 2011-12-21 21:07:21

+0

我試過了。但後來我不知道該節點的級別。我嘗試使用treeItem.setexpanded(true)。雖然它似乎有效,但它有時會產生一些完全意想不到的輸出,因爲節點不會被查看,但是經過一次操作後,它們就可以看到。可以用treeViewer.refresh()來解決問題嗎?還有什麼其他方法可以刷新特定節點,而不是整個樹? – Sid 2011-12-23 08:45:43

回答

5

JFace查看器已創建,因此開發人員不必亂用SWT窗口小部件,而是可以使用更高級別的API。當使用JFace的查看器/內容提供者/標籤提供者時,您應該控制樹中的節點(因此,當您說您只知道名稱時,我假設您直接使用SWT樹)。您可以從Eclipse help閱讀關於JFace觀衆的信息。

要展開樹節點使用的TreeViewerexpandToLevel(Object elementOrTreePath, int level)方法(水平相對於已展開,而不是樹的根的節點)。