如何使用文件夹和文件制作树?

时间:2017-10-04 13:30:27

标签: swing file directory jtree

所以,我有课程

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树/以及其他文件夹和文件。其中包括

2 个答案:

答案 0 :(得分:0)

我认为你可以display the tree using JTreechange the icons,  甚至是dynamically

答案 1 :(得分:0)

  

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

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