/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication5;import java.util.LinkedList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;/**
 *
 * @author Administrator
 */
public class NewClass {    LinkedList<String[]> s = new LinkedList<String[]>();//String[] 里面的 顺序是: 节点 名称 父节点    String[] e0 = {"1", "我的电脑1", ""};
    String[] e1 = {"2", "我的电脑2", "1"};
    String[] e2 = {"3", "我的电脑3", ""};
    String[] e3 = {"4", "我的电脑4", "3"};
    String[] e4 = {"5", "我的电脑5", ""};
    String[] e5 = {"6", "我的电脑6", "1"};
    String[] e6 = {"7", "我的电脑7", "5"};
    String[] e7 = {"8", "我的电脑8", "6"};
    String[] e8 = {"9", "我的电脑9", ""};
    String[] e9 = {"10", "我的电脑10", "8"};    public NewClass() {        s.add(e0);
        s.add(e1);
        s.add(e2);
        s.add(e3);
        s.add(e4);
        s.add(e5);
        s.add(e6);
        s.add(e7);
        s.add(e8);
        s.add(e9);
        System.out.println(s.size());
        System.out.println(s.get(0)[0]);
    }    public DefaultTreeModel treenode(String root, DefaultMutableTreeNode dd) {        DefaultTreeModel model = new DefaultTreeModel(dd);
        int lth = this.s.size();
        LinkedList<String> sx = new LinkedList<String>();
        LinkedList<DefaultMutableTreeNode> sxltree = new LinkedList<DefaultMutableTreeNode>();
        for (int i = 0; i < lth; i++) {
            DefaultMutableTreeNode treec = new DefaultMutableTreeNode(s.get(i)[1]);
            if (s.get(i)[2].equals(root)) {
                sxltree.add(treec);
                sx.add(s.get(i)[0]);
                dd.add(treec);
            }        }
        for (int i1 = 0; i1 < sx.size(); i1++) {
            System.out.println("一层完成il" + i1);
            treenode(sx.get(i1), sxltree.get(i1));        }
        System.out.println("一层完成");
        return model;
    }    public static void main(String[] args) {
        // TODO code application logic here
        DefaultMutableTreeNode ll = new DefaultMutableTreeNode("根目录管理器");
        NewClass ss = new NewClass();        JFrame jf = new JFrame();
        JPanel jp = new JPanel();
        JTree jtree = new JTree();        jtree.setModel(ss.treenode("", ll));
        JScrollPane hh = new JScrollPane(jtree);
              jf.add(hh);
             jf.setSize(300, 444);
        jf.setVisible(true);
    }
}

解决方案 »

  1.   

    好久没来了。随意说几句,代码我没有跑。这是一个极其简单的示例程序,你用的是List放数组。个人建议,使用map,取得的时候效率会更好。因为其实JTree即使你处死花的时候全部构建,实际在展开的时候也会再去取一次的。所以不如直接组织成为方便的形式。
    第二,一次构建不是一个好的做法。数据量大的时候可能造成很长时间的等待。
    第三,强烈建议使用实现treemodel所需方法的形式。这样可以加深你的理解,也可以方便灵活的扩展,适应多种需求。说的较为抽象,担不是完全抽象。
    一家之言,仅供参考。