1

JFileChooser下面是我点击一个按钮打开a的代码。我创建了一个过滤器,只允许选择 .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";
    }
}
4

2 回答 2

5

您需要实例化您的filter. 拥有 anull FileFilter将不会过滤掉任何文件类型:

MyFileFilter filter = new MyFileFilter();
于 2012-12-24T18:04:47.873 回答
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 
     }
于 2012-12-24T18:06:30.337 回答