gpt4 book ai didi

java - 使用 Java 中的 Jtree 和 File 列出文件和目录

转载 作者:行者123 更新时间:2023-12-02 06:19:29 24 4
gpt4 key购买 nike

我想用 JTree 创建一个非常非常简单的文件管理器,但我只看到了非常困难的代码,我想创建一个非常干净和简单的脚本。

你能帮我吗?如何在 JTree 中列出我的计算机的目录?

最佳答案

我编写了我能想到的最简单的文件浏览器示例。它列出了 Windows 计算机上 C: 驱动器上的所有目录和文件。

这是结果。

File Browser Swing JFrame

这是代码。我将所有内容放在一个类中,以便更容易粘贴到此处。你应该分开类(class)。

package com.ggl.testing;

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 FileBrowser 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 FileBrowser());
}

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;
}
}
}

}

关于java - 使用 Java 中的 Jtree 和 File 列出文件和目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23804675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com