http://expert.csdn.net/Expert/topic/1438/1438380.xml?temp=.1449854

解决方案 »

  1.   

    其实不需要那么麻烦,如下
    class myFilter extends javax.swing.filechooser.FileFilter {
    String extension="",description="";
    public myFilter(String extension,String description) {
    if(extension!=null)this.extension=extension;
    if(description!=null)this.description=description;
    }public myFilter(String[] extension,String description) {
    for(int i=0;i<extension.length;i++) {
      this(extension[i],description);
    }
    }public String getDescription() {
    return this.description;
    }public boolean accept(File file) {
    if(file.isDirectory()||extension.equals(""))
          return true;
    String[] s=extension.replaceAll("[*]","").split("[,]");
    for(int i=0;i<s.length;i++) {
          if(file.getName().toLowerCase().endsWith(s[i].toLowerCase())) {
            return true;
          }
    }
    return false;
    }
    }
      

  2.   

    :(java水平太差,没怎么看懂:(
      

  3.   

    sorry:
    public myFilter(String[] extension,String description) {
    for(int i=0;i<extension.length;i++) {
      this(extension[i],description);
    }
    }
    去掉
      

  4.   

    accept(File file)方法是对当前目录的所有文件进行过滤,每一个文件都要经过这个方法的确定,当返回为true的时候,这个文件将会在列表中被显示出来,返回false的时候,在列表中这个文件将被隐藏
      

  5.   

    我看书上是实现接口FilenameFilter而不是FileFilter 呀,他们的主要区别是不是FilenameFilter能够指定路径呀
      

  6.   

    通配符都是要自己处理的,就是在accept里处理,通常有?的过滤都用到正则表达式如:
    a?.jpg的匹配正则表达式为^[a].?(.jpg)$
    a*.jpg的匹配正则表达式为^[a].*(.jpg)$
      

  7.   

    这要是随便指定通配符 *和?,那正则表达式其不是很麻烦,
    我要是这样使用*?*.?ava,
    那我找他的正则表达式那不是...
    简单介绍一下正则表达式处理*和?的原理吗?