【问题标题】:Assign DefaultMutableTreeNode to JTree将 DefaultMutableTreeNode 分配给 JTree
【发布时间】:2011-10-20 12:32:53
【问题描述】:

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

【问题讨论】:

    标签: java swing netbeans jtree


    【解决方案1】:

    以下示例将帮助您做到这一点

    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);
    }
    }
    

    【讨论】:

    • 我已经尝试了这两行,但在我的情况下它没有注意到。我还检查了根对象,它包含预期的值。 DefaultMutableTreeNode root = processHierarchy(hierarchy); JTree 树 = 新 JTree(根);还有其他建议吗?
    【解决方案2】:

    【讨论】:

    • 您可以通过发布相关代码来改进此答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多