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

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

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

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

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

textual
Листинг программы
  1. package javaapplication1;
  2.  
  3. import java.io.File;
  4. import javax.swing.JFrame;
  5. import javax.swing.JScrollPane;
  6. import javax.swing.JTree;
  7. import javax.swing.SwingUtilities;
  8. import javax.swing.tree.DefaultMutableTreeNode;
  9. import javax.swing.tree.DefaultTreeModel;
  10.  
  11. public class JavaApplication1 implements Runnable {
  12.  
  13.     private DefaultMutableTreeNode root;
  14.  
  15.     private DefaultTreeModel treeModel;
  16.  
  17.     private JTree tree;
  18.  
  19.     @Override
  20.     public void run() {
  21.         JFrame frame = new JFrame("File Browser");
  22.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  23.  
  24.         File fileRoot = new File("C:/");
  25.         root = new DefaultMutableTreeNode(new FileNode(fileRoot));
  26.         treeModel = new DefaultTreeModel(root);
  27.  
  28.         tree = new JTree(treeModel);
  29.         tree.setShowsRootHandles(true);
  30.         JScrollPane scrollPane = new JScrollPane(tree);
  31.  
  32.         frame.add(scrollPane);
  33.         frame.setLocationByPlatform(true);
  34.         frame.setSize(640, 480);
  35.         frame.setVisible(true);
  36.  
  37.         CreateChildNodes ccn =
  38.                 new CreateChildNodes(fileRoot, root);
  39.         new Thread(ccn).start();
  40.     }
  41.  
  42.     public static void main(String[] args) {
  43.         SwingUtilities.invokeLater(new JavaApplication1());
  44.     }
  45.  
  46.     public class CreateChildNodes implements Runnable {
  47.  
  48.         private DefaultMutableTreeNode root;
  49.  
  50.         private File fileRoot;
  51.  
  52.         public CreateChildNodes(File fileRoot,
  53.                 DefaultMutableTreeNode root) {
  54.             this.fileRoot = fileRoot;
  55.             this.root = root;
  56.         }
  57.  
  58.         @Override
  59.         public void run() {
  60.             createChildren(fileRoot, root);
  61.         }
  62.  
  63.         private void createChildren(File fileRoot,
  64.                 DefaultMutableTreeNode node) {
  65.             File[] files = fileRoot.listFiles();
  66.             if (files == null) return;
  67.  
  68.             for (File file : files) {
  69.                 DefaultMutableTreeNode childNode =
  70.                         new DefaultMutableTreeNode(new FileNode(file));
  71.                 node.add(childNode);
  72.                 if (file.isDirectory()) {
  73.                     createChildren(file, childNode);
  74.                 }
  75.             }
  76.         }
  77.  
  78.     }
  79.  
  80.     public class FileNode {
  81.  
  82.         private File file;
  83.  
  84.         public FileNode(File file) {
  85.             this.file = file;
  86.         }
  87.  
  88.         @Override
  89.         public String toString() {
  90.             String name = file.getName();
  91.             if (name.equals("")) {
  92.                 return file.getAbsolutePath();
  93.             } else {
  94.                 return name;
  95.             }
  96.         }
  97.     }
  98.  
  99. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут