功能:使用JFileChooser选择文件,然后在JTree中显示选中的文件。要求这个文件可以显示二级目录
时间: 2024-05-10 18:15:46 浏览: 141
以下是一个示例代码,实现了使用 JFileChooser 选择文件并在 JTree 中显示选中的文件及其子目录:
```java
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class FileTreeDemo {
private JFrame frame;
private JTree tree;
private DefaultMutableTreeNode rootNode;
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
try {
FileTreeDemo window = new FileTreeDemo();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
});
}
public FileTreeDemo() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("File Tree Demo");
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(new BorderLayout(0, 0));
rootNode = new DefaultMutableTreeNode("My Computer");
tree = new JTree(rootNode);
panel.add(new JScrollPane(tree), BorderLayout.CENTER);
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result = fileChooser.showOpenDialog(frame);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
DefaultMutableTreeNode selectedNode = new DefaultMutableTreeNode(selectedFile.getName());
rootNode.add(selectedNode);
addSubNodes(selectedNode, selectedFile);
((DefaultTreeModel) tree.getModel()).reload(rootNode);
}
}
private void addSubNodes(DefaultMutableTreeNode parentNode, File parentFile) {
if (!parentFile.isDirectory()) {
return;
}
File[] subFiles = parentFile.listFiles();
if (subFiles == null) {
return;
}
for (File subFile : subFiles) {
DefaultMutableTreeNode subNode = new DefaultMutableTreeNode(subFile.getName());
parentNode.add(subNode);
addSubNodes(subNode, subFile);
}
}
}
```
运行程序后,将会弹出一个文件选择对话框,选择任意一个文件或文件夹,程序就会将选中的文件及其子目录显示在 JTree 中。其中,根节点为 "My Computer",选中的文件或文件夹为第一级子节点,其子目录为其余子节点。如果选中的是一个文件,那么 JTree 中只会显示这个文件本身,不会显示其子目录。
阅读全文