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

猜你喜欢

转载自www.cnblogs.com/xixixing/p/9760878.html
今日推荐