Отображение директории в JTree - Java

Узнай цену своей работы

Формулировка задачи:

Доброе утро, необходимо отобразить дерево выбранной директории с помощью компонента JTree с помощью существующих классов.

Решение задачи: «Отображение директории в JTree»

textual
Листинг программы
package javaapplication1;
 
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
 
public class JavaApplication1 implements Runnable {
 
    private DefaultMutableTreeNode root;
 
    private DefaultTreeModel treeModel;
 
    private JTree tree;
 
    @Override
    public void run() {
        JFrame frame = new JFrame("File Browser");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        File fileRoot = new File("C:/");
        root = new DefaultMutableTreeNode(new FileNode(fileRoot));
        treeModel = new DefaultTreeModel(root);
 
        tree = new JTree(treeModel);
        tree.setShowsRootHandles(true);
        JScrollPane scrollPane = new JScrollPane(tree);
 
        frame.add(scrollPane);
        frame.setLocationByPlatform(true);
        frame.setSize(640, 480);
        frame.setVisible(true);
 
        CreateChildNodes ccn = 
                new CreateChildNodes(fileRoot, root);
        new Thread(ccn).start();
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new JavaApplication1());
    }
 
    public class CreateChildNodes implements Runnable {
 
        private DefaultMutableTreeNode root;
 
        private File fileRoot;
 
        public CreateChildNodes(File fileRoot, 
                DefaultMutableTreeNode root) {
            this.fileRoot = fileRoot;
            this.root = root;
        }
 
        @Override
        public void run() {
            createChildren(fileRoot, root);
        }
 
        private void createChildren(File fileRoot, 
                DefaultMutableTreeNode node) {
            File[] files = fileRoot.listFiles();
            if (files == null) return;
 
            for (File file : files) {
                DefaultMutableTreeNode childNode = 
                        new DefaultMutableTreeNode(new FileNode(file));
                node.add(childNode);
                if (file.isDirectory()) {
                    createChildren(file, childNode);
                }
            }
        }
 
    }
 
    public class FileNode {
 
        private File file;
 
        public FileNode(File file) {
            this.file = file;
        }
 
        @Override
        public String toString() {
            String name = file.getName();
            if (name.equals("")) {
                return file.getAbsolutePath();
            } else {
                return name;
            }
        }
    }
 
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5