JFileChooser 文件选择器
程序员文章站
2022-05-19 15:39:32
...
大部分来自:https://blog.csdn.net/xietansheng/article/details/75948936
为用户提供了 打开文件 保存文件的机制
构造方法:
用的多的是前面三种
JFileChooser() 构造一个指向用户默认目录的 JFileChooser。
//下面两个效果相同
JFileChooser(File currentDirectory) 使用给定的 File 作为路径来构造一个 JFileChooser。
JFileChooser(String currentDirectoryPath) 构造一个使用给定路径的 JFileChooser。
JFileChooser(File currentDirectory, FileSystemView fsv) 使用给定的当前目录和 FileSystemView 构造一个 JFileChooser。
JFileChooser(String currentDirectoryPath, FileSystemView fsv) 使用给定的当前目录路径和 FileSystemView 构造一个 JFileChooser。
JFileChooser(FileSystemView fsv) 使用给定的 FileSystemView 构造一个 JFileChooser。
普通方法:
1、显示打开文件或是保存文件的对话框
/*
* 返回值:
* JFileChooser.APPROVE_OPTION: 点击了确认或保存
* JFileChooser.CANCEL_OPTION: 点击了取消或关闭
* FileChooser.ERROR_OPTION: 出现错误
*/
int showOpenDialog(Component parent) 显示 打开文件 的对话框
int showSaveDialog(Component parent) 显示 保存文件 的对话框
2、获取 打开文件或是保存文件时 选择的文件
File getSelectedFile()
File[] getSelectedFiles()
3、设置默认显示的文件夹:
void setCurrentDirectory(File dir)
4、设置文件选择模式
/*
* JFileChooser.FILES_ONLY: 只能选文件
* JFileChooser.DIRECTORIES_ONLY: 只能选文件夹
* JFileChooser.FILES_AND_DIRECTORIES: 文件和文件夹
*/
void setFileSelectionMode(int mode)
5、 设置是否允许同时选择多个(默认为不允许)
void setMultiSelectionEnabled(boolean b)
6、 设置默认被选中的文件
void setSelectedFile(File file)
void setSelectedFiles(File[] selectedFiles)
7、添加可供用户选择的文件过滤器
void addChoosableFileFilter(FileFilter filter)
8、 设置默认使用的文件过滤器
void setFileFilter(FileFilter filter)
我没有把所有的写在一起 所有只贴监听器的那一部分:
import java.awt.*;
import java.io.*;
import javax.swing.*;
public class TestMenuListener implements ActionListener{
private JFrame frame;
private JMenuItem menuItem;
private JTextArea textArea;
private JFileChooser fileChooser;
private File file;
//构造器写的有些...麻烦
public TestMenuListener(JMenuItem menuItem, JFrame frame, JTextArea textArea){
this.menuItem = menuItem;
this.frame = frame;
this.textArea = textArea;
fileChooser = new JFileChooser();
//默认显示的文件夹
fileChooser.setCurrentDirectory(new File("C:\\Users\\Administrator\\Desktop"));
//设置文件选择的模式(只选文件 只选文件夹 都可选)
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
//设置可否允许多选
fileChooser.setMultiSelectionEnabled(true);
//设置默认被选中的文件夹
fileChooser.setSelectedFile(new File("C:\\Users\\Administrator\\Desktop\\口令.txt"));
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() instanceof JMenuItem){
menuItem = (JMenuItem) e.getSource();
if("打开".equals(menuItem.getText())){
int res = fileChooser.showOpenDialog(frame);//此时线程会被中断 直到选择框被关闭
if(res == JFileChooser.APPROVE_OPTION){
file = fileChooser.getSelectedFile();
char[] arr = new char[(int)file.length()];
try (
FileReader ins = new FileReader(file);
){
ins.read(arr);
String str = new String(arr);
textArea.setText(str);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
}
else if("保存".equals(menuItem.getText())){
int res = fileChooser.showSaveDialog(frame);
if(res == JFileChooser.APPROVE_OPTION){
file = fileChooser.getSelectedFile();
textArea.append("保存到:" + file.getAbsolutePath() + "\n\n");
}
}
}
}
}