【问题标题】:How to list files and folders from path to tree?如何从路径到树列出文件和文件夹?
【发布时间】:2016-01-18 09:05:54
【问题描述】:

我已尝试使用该代码将目录列出到树

我设置name = "D:/folder"

文件夹目录有很多文件和文件夹

但我得到的只是一个带有名称(文件夹)的节点

public class tree {
    JTree tree;
    DefaultMutableTreeNode node1;
    DefaultMutableTreeNode temp;
    DefaultMutableTreeNode temp2;
    DefaultTreeModel model;
    String name = new currentfolder().getInitial(); // path to directory that its
                                                    // content appear in tree
    public tree() {
        tree = new JTree();
        node1 = new DefaultMutableTreeNode(name);
        temp = node1;
        import_data(new File(name));
        temp.setParent(node1);
        model = new DefaultTreeModel(node1);
        tree.setModel(model);
        model.reload();
        tree.setOpaque(false);
        tree.setBorder(javax.swing.BorderFactory.createCompoundBorder(
          new javax.swing.border.SoftBevelBorder(
          javax.swing.border.BevelBorder.RAISED),
          javax.swing.BorderFactory.createTitledBorder("")));
          tree.setVisible(true);
    }

    public void import_data(File file)    {
        if (file.isFile()) {
            temp2 = new DefaultMutableTreeNode(file.getName());
            temp2.setParent(temp);
            return;
        } else {
            if (file.isDirectory()) {
                if (!file.getName().equals(name)) {
                    temp2 = new DefaultMutableTreeNode(file.getName());
                    temp2.setParent(temp);
                    temp = temp2;
                }
            File[] f = file.listFiles();
            for (int i = 0; i < f.length; i++) {
                import_data(f[i]);
            }
        }
    }
}

那我该如何解决呢?

如果有修复该代码的方法会更好,然后以另一种方式列出到树

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

    要将节点添加到树中,您需要调用DefaultMutableTreeNode.add (temp.add(temp2))。调用setParent() 不会将节点添加到树中。

    您还需要更改import_data,使其接受两个参数:目录的File和目录对应的DefaultMutableTreeNode

    【讨论】:

    • 我试过 temp.add(temp2);但它给出相同的结果,因为 temp 将从下一行获得新值(temp = temp2;)
    • 给你的变量命名不是“temp”和“temp2”肯定会让你的代码更容易理解。
    • yah xD 因为那是版本 1 方法
    • thnx 我没想好你知道 TreeModelFile 是做什么的吗?
    • 我不知道有什么叫做“TreeModelFile”的东西。
    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2022-10-06
    • 2013-12-11
    • 2010-10-14
    • 2013-06-08
    相关资源
    最近更新 更多