高级组件——文件选择器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);//文件选择器添加过滤器
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); } }