2011-08-22 79 views
3

爲什麼JTree不顯示?這裏是我的代碼:JTree不顯示

initComponents(); 
    JTree treeView; 
    DefaultMutableTreeNode top = new DefaultMutableTreeNode("myBooks"); 
    DefaultMutableTreeNode category = new DefaultMutableTreeNode("Drama"); 
    DefaultMutableTreeNode book1 = new DefaultMutableTreeNode("Macbeth"); 
    DefaultMutableTreeNode book2 = new DefaultMutableTreeNode("Hamlet"); 
    category.add(book1); 
    category.add(book2); 
    top.add(category); 
    treeView = new JTree(top); 
    JScrollPane pane = new JScrollPane(treeView); 
    mainPanel.add(pane); 
+0

@Snicolas,我將背景設置爲紅色,但沒有解決問題。 treeView.setBackground(Color.red); – FadelMS

+2

這只是幫助瞭解發生了什麼的方法。正如@Hovercraft建議的那樣,嘗試更改'mainPanel'使用的佈局管理器。 – trashgod

+1

我覺得有點不好意思,因爲你剛剛從3個GUI大師那裏得到了很好的提示,但是爲了更快地提供更好的幫助,請發佈一個[SSCCE](http://pscode.org/sscce.html)。 –

回答

4

要延續Snicolas的回答(1+對他),您似乎將JScrollPane添加到您的mainPanel中,而不考慮使用的佈局管理器。我猜你的GUI使用的是GroupLayout,如果是這樣,我建議你使用一個更加用戶友好的佈局管理器。另外,您是否在頂層窗口中調用pack和setVisible(true)後添加窗格JScrollPane?如果是這樣,您需要重新驗證並重新繪製接收新組件的容器。

+0

你說得對,問題出在GroupLayout上。一旦更改爲FlowLayout,JTree就會出現。謝謝 – FadelMS

+0

不客氣,但我只需要注意我很少使用FlowLayout,因爲它是佈局經理中最弱的一個。 –

+1

「最弱」是相對的:-) – kleopatra

5

給你JTree背景,看看它佔用與屏幕上的空間。您也可以使用CTRL + SHIFT + F1在一個鞦韆應用程序,並看到與大小,位置和一切控制檯中的不同組件。

我的猜測是mainPanel沒有一個好的佈局或jtree應該有一個體面的首選大小設置。

+1

*「您可以使用CTRL + SHIFT + F1 ..」*輝煌!你從哪裏拿起那顆智慧之珠? –