使用JTree驱动资源管理器

时间:2014-09-02 11:01:45

标签: java swing

我想创建一个带有jcheckbox选择的Drive explorer,它将使用JTree显示计算机的所有驱动器,文件夹和文件,就像Windows文件浏览器一样:

enter image description here

我做了很多:

enter image description here

public class NewJFrame extends javax.swing.JFrame {

    DefaultMutableTreeNode nodes;
    public NewJFrame() {
        nodes = new DefaultMutableTreeNode("Root", true);
        addRoots(nodes);
        initComponents();
        jTree1.setRootVisible(false);

    }

    public void addRoots(DefaultMutableTreeNode parent){
        File roots[] = File.listRoots();
        for(File root: roots){
            DefaultMutableTreeNode child = new DefaultMutableTreeNode(root);
            child.add(new DefaultMutableTreeNode("test"));
            parent.add(child);
        }
    }

    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree(nodes);
        //.......
        //.......
    }

}

1 个答案:

答案 0 :(得分:0)

要解决您的问题(动态添加节点 - >在评论中描述),您可以使用虚拟节点和TreeListener之类的东西来实现。 虚拟节点(在本例中)用于伪造现有子节点 在TreeNodeExpand-Event中,您可以检查展开的节点是否只有一个虚拟子节点,然后您可以即时创建REAL子节点。

这意味着,对于您获得的每个文件夹,您将创建一个新节点,其中directlcy包含DUMMY子节点(伪造现有子节点)。 然后,展开时,删除虚拟节点并添加REAL节点。 (与您为当前目录获得的所有文件夹相同)