import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
public class test {
public static void main(String[] args) throws Exception {
// 创建窗口
final JFrame jf = new JFrame("测试窗口");
jf.setSize(400, 250);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 创建面板
JPanel panel = new JPanel();
// 创建文本区域, 用于显示相关信息
final JTextArea msgTextArea = new JTextArea(10, 30);
msgTextArea.setLineWrap(true);
panel.add(msgTextArea);
// 创建 打开文件按钮
JButton openBtn = new JButton("打开");
openBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showFileOpenDialog(jf, msgTextArea); // 打开文件对话框,创建自己的类,第一个参数是父窗口,第二个是显示文本框
}
});
panel.add(openBtn);
// 保存按钮
JButton saveBtn = new JButton("保存");
saveBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showFileSaveDialog(jf, msgTextArea); // 保存文件对话框,创建自己的类
}
});
panel.add(saveBtn);
jf.setContentPane(panel);
jf.setVisible(true);
}
/*
* 打开文件
*/
private static void showFileOpenDialog(Component parent, JTextArea msgTextArea) {
// 创建一个默认的文件选取器
JFileChooser fileChooser = new JFileChooser();
// 设置默认显示的文件夹为当前文件夹
fileChooser.setCurrentDirectory(new File("."));
// 设置文件选择的模式(只选文件、只选文件夹、文件和文件均可选)
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
// 设置是否允许多选
fileChooser.setMultiSelectionEnabled(true);
// 添加可用的文件过滤器(FileNameExtensionFilter 的第一个参数是描述, 后面是需要过滤的文件扩展名 可变参数)
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("zip(*.zip, *.rar)", "zip", "rar"));
// 设置默认使用的文件过滤器
fileChooser.setFileFilter(new FileNameExtensionFilter("image(*.jpg, *.png, *.gif)", "jpg", "png", "gif"));
// 打开文件选择框(线程将被阻塞, 直到选择框被关闭)
int result = fileChooser.showOpenDialog(parent); // 正真打开选择对话框 parent就是父窗口
if (result == JFileChooser.APPROVE_OPTION) {
// 如果点击了"确定", 则获取选择的文件路径
/*返回值:
* JFileChooser.CANCEL_OPTION: 点击了取消或关闭
* JFileChooser.APPROVE_OPTION: 点击了确认或保存
* JFileChooser.ERROR_OPTION: 出现错误*/
// 获得被选择文件
File file = fileChooser.getSelectedFile();
// 如果允许选择多个文件, 则通过下面方法获取选择的所有文件
// File[] files = fileChooser.getSelectedFiles();
msgTextArea.append("打开文件: " + file.getAbsolutePath() + "\n\n");
}
}
/*
* 选择文件保存路径
*/
private static void showFileSaveDialog(Component parent, JTextArea msgTextArea) {
// 创建一个默认的文件选取器
JFileChooser fileChooser = new JFileChooser();
// 设置打开文件选择框后默认输入的文件名
fileChooser.setSelectedFile(new File("测试文件.zip"));
// 打开文件选择框(线程将被阻塞, 直到选择框被关闭)
int result = fileChooser.showSaveDialog(parent);
if (result == JFileChooser.APPROVE_OPTION) {
// 如果点击了"保存", 则获取选择的保存路径
File file = fileChooser.getSelectedFile();
msgTextArea.append("保存到文件: " + file.getAbsolutePath() + "\n\n");
}
}
}
java笔记 JFileChooser使用
最新推荐文章于 2024-03-22 03:29:00 发布