2015-09-15 31 views
0

我正在嘗試在RCP中學習TreeViewer。我爲此寫了一小段代碼。Tree中的所有節點都沒有擴展

public class TreeViewClass extends ViewPart { 

public static final String ID = "TreeViewerDemo.treeView"; 

public TreeViewClass() { 
    // TODO Auto-generated constructor stub 
} 

@Override 
public void createPartControl(Composite parent) { 

    TreeViewer treeViewer = new TreeViewer(parent, SWT.BORDER); 
    Tree tree = treeViewer.getTree(); 

    TreeItem root = new TreeItem(tree, 0); 
    root.setText("Root Node"); 

    TreeItem childNode1 = new TreeItem(root, 0); 
    childNode1.setText("Child Node 1"); 

    TreeItem childNode2 = new TreeItem(childNode1, 0); 
    childNode2.setText("Child Node 2"); 
} 

@Override 
public void setFocus() { 
    // TODO Auto-generated method stub 

} 

} 

當我運行此代碼時,樹顯示,但只顯示根節點。當我點擊根節點(帶有箭頭圖標,這意味着它有子節點)時,該節點不顯示子節點。 後來我發現,當我將setExpanded(true)應用於節點時,它會顯示出來,否則就不會。

我的代碼中的問題在哪裏?

謝謝!

+1

如果您使用'TreeViewer',則不應使用'TreeItem'。而是使用內容提供者和標籤提供者。如果你想用'TreeItem'使用'Tree'。將兩者混合將會產生不可預知的結果。 –

+0

非常感謝greg!你能否提供一個使用樹和Treeitem的例子。我試圖這樣做時弄得一團糟。所以我試圖使用treeviewer。我會很感激!再次感謝! –

+1

我認爲只是做'新樹'而不是TreeViewer是唯一的改變。如果你想讓節點擴展,你必須調用'setExpanded'。 –

回答

1

如果您使用的是TreeViewer,則不應使用TreeItem。而是使用內容提供者和標籤提供者。如果您想使用TreeItem,請使用Tree。將兩者混合將會產生不可預知的結果。

使用TreeItem時,需要對每個要擴展的項目調用setExpanded(true)