2012-11-29 20 views
0

我使用第一個例子here提到創建我的JTree,但我想在JscrollPanel中以超級樹作爲根。我只是改變了框的佈局,並用相同的代碼創建了另一棵樹,但是當我運行該程序時,樹並沒有出現在我身上。多個JTree沒有出現在JScrollPanel

這裏是我的代碼

import java.awt.*; 
import javax.swing.*; 
import javax.swing.tree.*; 

public class SimpleTree extends JFrame { 
    public static void main(String[] args) { 
    new SimpleTree(); 
    } 

    public SimpleTree() { 
    super("Creating a Simple JTree"); 
    Container content = getContentPane(); 
    Object[] hierarchy = 
     { "javax.swing", 
     "javax.swing.border", 
     "javax.swing.colorchooser", 
     "javax.swing.event", 
     "javax.swing.filechooser", 
     new Object[] { "javax.swing.plaf", 
         "javax.swing.plaf.basic", 
         "javax.swing.plaf.metal", 
         "javax.swing.plaf.multi" }, 
     "javax.swing.table", 
     new Object[] { "javax.swing.text", 
         new Object[] { "javax.swing.text.html", 
             "javax.swing.text.html.parser" }, 
         "javax.swing.text.rtf" }, 
     "javax.swing.tree", 
     "javax.swing.undo" }; 
    DefaultMutableTreeNode root = processHierarchy(hierarchy); 
    DefaultMutableTreeNode root2 = processHierarchy(hierarchy); 
    JTree tree = new JTree(root); 
    JTree tree2 = new JTree(root2); 
    content.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 
    content.add(new JScrollPane(tree)); 
    content.add(new JScrollPane(tree2)); 
    setSize(getPreferredSize()); 
    setVisible(true); 
    } 

    /** Small routine that will make node out of the first entry 
    * in the array, then make nodes out of subsequent entries 
    * and make them child nodes of the first one. The process is 
    * repeated recursively for entries that are arrays. 
    */ 

    private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) { 
    DefaultMutableTreeNode node = 
     new DefaultMutableTreeNode(hierarchy[0]); 
    DefaultMutableTreeNode child; 
    for(int i=1; i<hierarchy.length; i++) { 
     Object nodeSpecifier = hierarchy[i]; 
     if (nodeSpecifier instanceof Object[]) // Ie node with children 
     child = processHierarchy((Object[])nodeSpecifier); 
     else 
     child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf 
     node.add(child); 
    } 
    return(node); 
    } 
} 

可能有人請幫助我。所有的幫助將非常感激。

由於 阿希什特亞吉

回答

3

JScrollPane一個在其ViewPort着眼於一個單一子組件。

但是,您可以將2 JScrollPane組件放置在單個面板上,並將其平均分割爲GridLayout(2, 1),並將JScrollPane的視圖設置爲新面板。

除了:您應該使用ContentPaneBoxLayout容器:

content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS)); 
+0

非常感謝。看起來像我的代碼創建兩個不同的滾動面板,有沒有什麼辦法可以在一個滾動面板中添加兩個樹。 – Ashish