FileFilter for JFileChooser不起作用

时间:2012-12-24 18:00:59

标签: java swing jfilechooser filefilter

以下是我点击按钮时打开JFileChooser的代码。我创建了一个过滤器,只允许选择.jpg文件,但我的代码不能按预期工作。所有类型的文件都显示在JFileChooser对话框中。部分代码:

MyFileFilter filter;

fPhoto=new JFileChooser();
fPhoto.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);        
fPhoto.setFileFilter(filter);

MyFileFilter类:

public class MyFileFilter extends javax.swing.filechooser.FileFilter{

    public boolean accept(File f){

    return f.isDirectory()||(f.isFile()&&f.getName().toLowerCase().endsWith(".jpg"));
    }

    public String getDescription(){

    return ".jpg files";
    }
}

2 个答案:

答案 0 :(得分:5)

您需要实例化filter。拥有null FileFilter将导致没有过滤掉任何文件类型:

MyFileFilter filter = new MyFileFilter();

答案 1 :(得分:3)

如果您想浏览指定的文件,请查看此代码

 try
        {
        JFileChooser fc = new JFileChooser();
        fc.setAcceptAllFileFilterUsed(false);
        fc.setFileFilter(new FileFilter() {

            @Override
            public boolean accept(File file) {
               return (file.isDirectory()||file.getName().endsWith(".JPG")||file.getName().endsWith(".jpg"));
            }

            @Override
            public String getDescription() {
                return "Multi-Video Files";
            }
        });
        File file;
        if(JFileChooser.APPROVE_OPTION==fc.showDialog(null, "Select Files"))   
        {
           File file = fc.getSelectedFile();  //HERE YOU WILL GET THE SELECTED FILE 
        }
        }catch(Exception e){System.out.println("error");
        }

如果您只想浏览目录,那么

JFileChooser fc = new JFileChooser();
     File file;
     fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

     if(JFileChooser.APPROVE_OPTION==fc.showDialog(null, "Select"))   
     {
      File file = fc.getSelectedFile();  //HERE YOU WILL GET THE SELECTED DIRECTORY PATH 
     }