2011-10-20 46 views
2

我正在Netbeans中開發一個小型桌面應用程序。我將JTree拖放到我的JFrame上,現在我想動態填充此JTree的節點層次結構。對於這個我worte方法返回我DefaultMutableTreeNode對象。現在,我如何分配此對象,而我拖JTree拖放將DefaultMutableTreeNode分配給JTree

回答

5

下面的例子將幫助你做到這一點

package commondemo; 
/** 
* 
* @author hemant 
*/ 
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); 
JTree tree = new JTree(root); 
content.add(new JScrollPane(tree), BorderLayout.CENTER); 
setSize(275, 300); 
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); 
} 
} 
+0

我已經嘗試這兩種線,但它確實在注意我案件。我也檢查它包含值的根對象如預期。 DefaultMutableTreeNode root = processHierarchy(hierarchy); JTree tree = new JTree(root); 還有其他建議嗎? – Jame

+0

你可以請提供代碼片段嗎? –