Java 将DefaultMutableTreeNode分配给JTree

Java 将DefaultMutableTreeNode分配给JTree,java,swing,netbeans,jtree,Java,Swing,Netbeans,Jtree,我正在用Netbeans开发一个小型桌面应用程序。我将JTree拖放到我的JFrame上,现在我想动态填充这个JTree的节点层次结构。为此,我编写了一个方法,返回我DefaultMutableTreeNode对象。现在,如何将此对象分配给拖放的JTree,下面的示例将帮助您完成此操作 package commondemo; /** * * @author hemant */ import java.awt.*; import javax.swing.*; import javax.sw

我正在用Netbeans开发一个小型桌面应用程序。我将
JTree
拖放到我的
JFrame
上,现在我想动态填充这个
JTree
的节点层次结构。为此,我编写了一个方法,返回我
DefaultMutableTreeNode
对象。现在,如何将此对象分配给拖放的
JTree
,下面的示例将帮助您完成此操作

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);
}
}
package-commondemo;
/**
*
*@作者赫曼特
*/
导入java.awt.*;
导入javax.swing.*;
导入javax.swing.tree.*;
公共类SimpleTree扩展JFrame{
公共静态void main(字符串[]args){
新的SimpleTree();
}
公共SimpleTree(){
超级(“创建一个简单的JTree”);
容器内容=getContentPane();
对象[]层次结构=
{“javax.swing”,
“javax.swing.border”,
“javax.swing.colorchooser”,
“javax.swing.event”,
“javax.swing.filechooser”,
新对象[]{“javax.swing.plaf”,
“javax.swing.plaf.basic”,
“javax.swing.plaf.metal”,
“javax.swing.plaf.multi”},
“javax.swing.table”,
新对象[]{“javax.swing.text”,
新对象[]{“javax.swing.text.html”,
“javax.swing.text.html.parser”},
“javax.swing.text.rtf”},
“javax.swing.tree”,
“javax.swing.undo”};
DefaultMutableTreeNode根=processHierarchy(层次结构);
JTree树=新的JTree(根);
添加(新的JScrollPane(树),BorderLayout.CENTER);
设置尺寸(275300);
setVisible(真);
}
/**使节点脱离第一个条目的小例程
*在数组中,然后从后续条目中生成节点
*并使它们成为第一个节点的子节点
*对属于数组的条目递归重复。
*/
私有DefaultMutableTreeNode processHierarchy(对象[]层次结构){
DefaultMutableTreeNode节点=
新的DefaultMutableTreeNode(层次结构[0]);
DefaultMutableTreeNode子级;

对于(int i=1;i

我已经尝试了这两行,但在我的例子中没有注意到。我还检查了根对象,它包含预期的值。DefaultMutableTreeNode root=processHierarchy(hierarchy);JTree tree=new JTree(root);还有其他建议吗?您可以通过发布相关代码来改进这个答案。