【问题标题】:FileFilter for JFileChooser doesn't workJFileChooser 的 FileFilter 不起作用
【发布时间】:2012-12-24 18:00:58
【问题描述】:

下面是我点击按钮打开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";
    }
}

【问题讨论】:

  • 启动调试器、设置一两个断点并逐步检查代码以查看您做错了什么会更快,也更有教育意义。假设这个类在正确实施时可以正常工作。
  • 您发布的代码未初始化 filter 变量。我不确定,但这可能是原因。
  • 一个非常愚蠢的错误:D!谢谢哈奇克!

标签: java swing jfilechooser filefilter


【解决方案1】:

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

MyFileFilter filter = new MyFileFilter();

【讨论】:

  • 没问题,节日快乐! :)
【解决方案2】:

如果你想浏览指定的文件,看看这段代码

 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 
     }

【讨论】:

    猜你喜欢
    • 2020-04-30
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2018-01-07
    • 1970-01-01
    相关资源
    最近更新 更多