Как отобразить все файлы выбранной папки, например Explorer, в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как отобразить все файлы выбранной папки, например Explorer, в Java?

Сообщение Anonymous »


Я пытаюсь создать проводник Windows, и у меня есть окно навигации, в котором отображается структура папок. Далее я хочу реализовать, чтобы все файлы, включая подпапки в выбранной папке в окне навигации, отображались в синей области («viewWindow»), но я не знаю, как это сделать. Я предполагаю, что мне нужно создать прослушиватель, который распознает щелчок мыши, и он это сделает, отображая все файлы.
import java.awt.Color; импортировать java.awt.Component; импортировать java.awt.Toolkit; импортировать java.io.File; импортировать java.util.Enumeration; импортировать java.util.HashMap; импортировать java.util.Map; импортировать java.util.NoSuchElementException; импортировать javax.swing.filechooser.FileSystemView; импортировать javax.swing.tree.DefaultTreeCellRenderer; импортировать javax.swing.tree.TreeNode; импортировать javax.swing.Icon; импортировать javax.swing.JFrame; импортировать javax.swing.JLabel; импортировать javax.swing.JPanel; импортировать javax.swing.JScrollPane; импортировать javax.swing.JSplitPane; импортировать javax.swing.JTree; импортировать javax.swing.SwingUtilities; @SuppressWarnings("последовательный") публичный класс fileViewer расширяет JFrame { частный статический int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width; частный статический int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height; частный статический FileSystemView fsv = FileSystemView.getFileSystemView(); частная панель JSplitPane; общественный просмотрщик файлов () { Дерево JTree = новый JTree(новый FileTreeNode(File.listRoots())); Tree.setCellRenderer(новый RenderFileCell()); Tree.setRootVisible(ложь); JScrollPane NavigationWindow = новый JScrollPane (дерево); JPanel viewWindow = новый JPanel(); viewWindow.setBackground(Color.BLUE); панель = новый JSplitPane(JSplitPane.HORIZONTAL_SPLIT, NavigationWindow, viewWindow); панель.setDividerLocation(100); добавить (панель); } // для визуализации отдельной ячейки файла публичный статический класс RenderFileCell расширяет DefaultTreeCellRenderer { частная карта iconCache = new HashMap(); частная Map rootNameCache = new HashMap(); общественный RenderFileCell () { } @Override общедоступный компонент getTreeCellRendererComponent (дерево JTree, значение объекта, выбранное логическое значение, расширенное логическое значение, логический лист, int row, логический hasFocus) { Результат JLabel = ноль; FileTreeNode ftn = (FileTreeNode) значение; Файл файл = ftn.file; Строка имя_файла = ""; если (файл != ноль) { если (ftn.isFileSystemRoot) { имя_файла = this.rootNameCache.get(файл); если (имя_файла == ноль) { имя_файла = fsv.getSystemDisplayName(файл); this.rootNameCache.put(файл, имя_файла); } } еще { имя_файла = имя_файла.getName(); } } результат = (JLabel) super.getTreeCellRendererComponent( дерево, имя_файла, выбранное, развернутое, лист, строка, hasFocus); если (файл != ноль) { Значок значка = iconCache.get(fileName); если (значок == ноль) { значок = fsv.getSystemIcon(файл); iconCache.put(имя_файла, значок); } результат.setIcon(значок); } вернуть результат; } } частный статический класс FileTreeNode реализует TreeNode { личный файл файла; частный родительский элемент TreeNode; частный файл[] дети; частное логическое значение isFileSystemRoot; public FileTreeNode(File[] дети) { файл = ноль; родитель = ноль; this.дети = дети; } public FileTreeNode (файл файла, логическое значение isFileSystemRoot, родительский элемент TreeNode) { этот.файл = файл; this.isFileSystemRoot = isFileSystemRoot; this.parent = родительский; дети = this.file.listFiles(); если (дети == ноль) { дети = новый файл [0]; } } @Override public TreeNode getChildAt (int childIndex) { вернуть новый FileTreeNode(дети[childIndex], родитель == null, это); } @Override public int getChildCount() { вернуть детям.длину; } @Override общественный TreeNode getParent() { вернуть родителя; } @Override public int getIndex (узел TreeNode) { FileTreeNode ftn = (FileTreeNode) узел; for (int i = 0; i < Children.length; я++) { если (ftn.file.equals(дети)) { вернуть я; } } вернуть -1; } @Override общедоступное логическое значение getAllowsChildren() { вернуть истину; } @Override общедоступное логическое значение isLeaf() { вернуть getChildCount() == 0; } @Override публичное перечисление
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»