利用JFileChooser选择文件

1.基本应用:
可以利用JFileChooser控件选择文件,JFileChooser构造函数可以传入当前路径可以是File类型或者字符串形式的路径,.表示当前路径。如果不传入参数,显示的路径是我的文档(window系统测试)。
创建完JFileChooser控件,调用showOpenDialog方法,选择文件后选择点击打开按钮后,showOpenDialog的返回值为JFileChooser.APPROVE_OPTION(int型),可以作为判断是否点击了打开按钮。
可以通过setMultiSelectionEnabled方法设置是否可以多选,通过setFileSelectionMode(int mode)设置可以选择文件,路径或文件和路径,值分别为:JFileChooser.FILES_ONLY
JFileChooser.DIRECTORIES_ONLY
JFileChooser.FILES_AND_DIRECTORIES

点击打开按钮后,可以利用getSelectedFile()返回一个文件,getSelectedFiles()返回文件数组(可以多选的情况下).但是也需要判断返回值是否为null,因为可以不选择文件或路径,而直接点击打开按钮返回。
实现一个打开jpg图片文件,然后显示的程序,代码如下:

public class FileChooserTest extends JFrame
{
    JLabel label;
    public FileChooserTest()
    {
        JPanel panel = new JPanel();
        label = new JLabel();
        JButton jbn = new JButton("打开文件");
        panel.add(jbn);
        jbn.addActionListener(new ActionListener()
        {
            
            @Override
            public void actionPerformed(ActionEvent e)
            {
                JFileChooser jfc = new JFileChooser();
                jfc.setMultiSelectionEnabled(false);
                jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
                int res = jfc.showOpenDialog(FileChooserTest.this); 
                if(res == JFileChooser.APPROVE_OPTION)
                {
                    File file = jfc.getSelectedFile();
                    if(file!=null&&file.getName().endsWith(".jpg"))
                        label.setIcon(new ImageIcon(file.getAbsolutePath()));
                }
            }
        });
        add(label);
        add(panel,BorderLayout.SOUTH);
        try
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (Exception e)
        {
        }
        init();
    }

    

    public void init()
    {

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(600, 500);
        this.setLocationRelativeTo(null);
        this.setTitle("树控件");
        this.setVisible(true);
    }
}

2.文件过滤器
可以为JFileChooser添加文件过滤器,可以添加多个,但在给定的时刻,只能激活一个。FileFilter抽象类有两个方法,boolean accept(File f)表示是否接收该文件,String getDescription()返回的字符串显示在JFileChooser的组合框中。定义了一个txt过滤器和一个图片过滤器,代码如下:

class TextFileFilter extends FileFilter
{

    @Override
    public boolean accept(File f)
    {
        // TODO Auto-generated method stub
        if(f.isDirectory()) return true;
        String name = f.getName();
        if(name.endsWith(".txt"))
            return true;
        
        return false;
    }

    @Override
    public String getDescription()
    {
        // TODO Auto-generated method stub
        return "文本文件(*.txt)";
    }
    
}
class PicFileFilter extends FileFilter
{

    @Override
    public boolean accept(File f)
    {
        // TODO Auto-generated method stub
        if(f.isDirectory()) return true;
        String name = f.getName();
        if(name.endsWith(".jpg")||name.endsWith(".png")
                ||name.endsWith(".gif"))
            return true;
        
        return false;
    }

    @Override
    public String getDescription()
    {
        // TODO Auto-generated method stub
        return "图片文件(*.jpg,*.png,*.gif)";
    }
    
}

由于水平有限,如果有错误,请大家多多指导,提高水平,共同学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容