高级组件——文件选择器JFileChooser

时间:2023-03-09 02:30:21
高级组件——文件选择器JFileChooser

1、创建文件选择器 JFileChooser

2、设置选择模式 setFileSelectionMode(int mode)

JFileChooser.FILES_ONLY 只能选择文件(默认)

JFileChooser.DIRECTORIES_ONLY 只能选择文件夹

JFileChooser.FILES_AND_DIRECTORIES 可以选择文件和文件夹

3、文件的单选、多选 setMultiSelectionEnable(boolean b)

true 多选

false 单选(默认)

4、显示对话框 showOpenDialog(c),c是窗体*容器Container c

文件过滤】如图像、音频、文档等类型。抽象类FileFilter,具体类FileNameExtensionFilter

FileNameExtensionFilter(String 文件类型描述信息,String 文件类型...)

例如:FileFilter filter=new FileNameExtensionFilter("图像文件","JPG","PNG","GIF");//java只支持这三种图片格式

fileChooser.setFileFilter(filter);//文件选择器添加过滤器

高级组件——文件选择器JFileChooser高级组件——文件选择器JFileChooser

高级组件——文件选择器JFileChooser

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File; public class Demo extends JFrame {
public Demo() {
setTitle("文件选择对话框");
setBounds(100, 100, 400, 100);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());//设置容器为流布局,防止后控件覆盖前控件 JLabel label=new JLabel("文件:");
c.add(label); JTextField textField=new JTextField();
textField.setColumns(20);//文本框宽度
c.add(textField); JButton button=new JButton("上传");
c.add(button);
/*单击“上传”,弹出文件选择器(文件选择窗口),单击“打开”,被选中的文件路径显示在文本框中*/
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser=new JFileChooser();//文件选择器
fileChooser.setMultiSelectionEnabled(true);//是否可以多选文件
//筛选结果为文件夹和图片文件
FileFilter fileFilter=new FileNameExtensionFilter("图片","jpg","png","gif");//过滤器
fileChooser.setFileFilter(fileFilter);//设置选择器的过滤器
int i=fileChooser.showOpenDialog(c);//在容器中显示文件选择器
if (i==JFileChooser.APPROVE_OPTION){//如果在选择器中单击“打开”
File file=fileChooser.getSelectedFile();//获取选择器中选中的文件
textField.setText(file.getAbsolutePath());//文本框中显示绝对路径
}
}
});
} public static void main(String[] args) {
Demo frame = new Demo();
frame.setVisible(true);
}
}