【问题标题】:How to make a tree with folders and files?如何用文件夹和文件制作一棵树?
【发布时间】:2017-10-04 13:30:26
【问题描述】:

所以,我有课

public class Walker implements Runnable{
    public File rootDirectory;
    private ScrollPane outputField;

    Walker(String rootDirectoryPath,ScrollPane outputField ) throws FileNotFoundException{
        this.outputField = outputField;
        File file = new File(rootDirectoryPath);
        if (file.exists() && file.isDirectory())
            rootDirectory = file;
        else
            throw new FileNotFoundException();
    }


    @Override
    public void run(){
        scanDirectory(rootDirectory);
    }


    void scanDirectory(File directory){
        File[] files = directory.listFiles();
        if (files != null){
            for (File f : files){
                final String path = f.getAbsolutePath();

                if (SwingUtilities.isEventDispatchThread()){
                    outputField.append(path);
                } else {
                    SwingUtilities.invokeLater(new Runnable(){
                        @Override
                        public void run(){
                            outputField.append(path);
                        }
                    });
                }

                if (f.isDirectory() && !f.isHidden()){
                    scanDirectory(f);
                }
            }
        }
    }
}

和类 ScrollPane

import javax.swing.*;

class ScrollPane extends JScrollPane{
    private static JTextArea jta = new JTextArea();
    private final String WARNING_MESSAGE =
            "Вы ввели неверный путь или он ссылается на регулярный файл.";

    ScrollPane(){
        super(jta);
        setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    }

    void append(String s){
        jta.append(s + '\n');
        getVerticalScrollBar().setValue(getVerticalScrollBar().getMaximum());
    }

    /**
     * Метод очищает панель вывода.
     */
    void clearAll(){
        jta.setText("");
    }

    void showWarningMessage(){
        jta.append(WARNING_MESSAGE);
    }
}

我想用这样的文件创建一个树文件夹: enter image description here

我想换一个。以便在其中创建文件夹/文件树 例如,FileSystemView 类有一个返回目录的 getRoots() 方法和一个返回文件的 getFiles()。但我不能将它应用到我的任务中,因为我需要创建一个树而不是整个文件系统。但只能从指定的目录开始。也就是说,用户指定一个目录,例如 D:\JAVA\ 并且在退出时应该得到 JAVA 树 / 以及进一步的文件夹和文件。其中包括

【问题讨论】:

    标签: swing file directory jtree


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      我需要创建一个树而不是整个文件系统。但只能从指定的目录开始。

      使用File 类。可以使用listFiles(...)方法获取指定File的文件/目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-29
        • 2023-01-03
        • 2010-11-23
        相关资源
        最近更新 更多