`
zjfgf
  • 浏览: 12009 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
filechooser&& FileFilter 文件过滤器
教你用Java用JFileChooser设置FileFilter文件过滤 
2009-08-27 20:09
Java 设置文件过率比较麻烦,不像C#直接过滤语句就行。 下面是一个简单示例,让大家明白原理

首先创建一个java 类 继承 FileFilter 例如:

import java.io.File;

import javax.swing.filechooser.FileFilter;


public class MyFileFilter extends FileFilter{

   public boolean accept(File f) {
   String tmp=f.getName().toLowerCase();
//   显示文件夹
         if(f.isDirectory()){
             return true; 
         }
//       循环过滤文件过滤
        if(tmp.endsWith(".jpg") || tmp.endsWith(".gif")   ){
           return true;
        }
         return false;
}

public String getDescription() {
       return "图像文件(*.jpg,*gif)";
   } 

}


使用方法:

JFileChooser fileDialog=new JFileChooser("D:");

MyFileFilter mf=new MyFileFilter();

this.fileDialog.setFileFilter(mf);

------------------------------------------------------------------------------------------------------------------------------

我以前写写了一个FileFilter类,把功能增强一点,蛮好用的。由于自己主要搞WEB项目所以很少用。下面是源码。 很简单的,如果不想打代码,直接拿去用也可以。

import java.io.File;

import javax.swing.filechooser.FileFilter;


public class MyFileFilter extends FileFilter{

private int length;
private String[] filters=new String[100];
private String desc;

public MyFileFilter(){

}

public MyFileFilter(String str){
   this.filters[length]=str;
   length++;
}
public MyFileFilter(String str,String desc){
   this.filters[length]=str;
   this.desc=desc;
   length++;
}




public boolean accept(File f) {
   String tmp=f.getName().toLowerCase();
//   如果小于0 显示所有文件
   if(length==0){
    return true; 
   }
//   显示文件夹
         if(f.isDirectory()){
             return true; 
         }
//       循环过滤文件过滤
         for(int i=0;i<length;i++){
        if(tmp.endsWith(this.filters[i])){
           return true;
        }
         }
         return false;
}

/**
* 
* @param str 过滤器名称 例如:".jpg"
*/
public void addFilter(String str){
   this.filters[length]=str;
   this.length++;
}
/**
* 
* @param str 过滤器名称 例如:".jpg"
* @param desc @param desc 此过滤器的描述。例如:"JPG and GIF Images" 
*/
public void addFilter(String str,String desc){
   this.filters[length]=str;
   this.desc=desc;
   length++;
}

/** 
* @param str 传递多个 过滤器名称 例如:{".jpg",".gif"}
* @param desc 此过滤器的描述。例如:"JPG and GIF Images" 
*/
public void addFilter(String[] str,String desc){
   this.filters=str;
   this.desc=desc;
   this.length=str.length;
}

/**
* 
* @param desc 此过滤器的描述。例如:"JPG and GIF Images" 
*/
public void setDesc(String desc) {
   this.desc=desc;
} 


@Override
public String getDescription() {
   return desc;
} 
}




public boolean accept(File f) {
   String tmp=f.getName().toLowerCase();

         if(f.isDirectory() || tmp.endsWith(".jpg") || tmp.endsWith(".gif")    ){
             return true;
         }
         return false;
}

}


public String getDescription() {
   return "图像文件(*.jpg,* .gif)";
}
}


这样算是完成了,比较简单。

使用方法

JFileChooser fileDialog=new JFileChooser("D:");

MyFileFilter mf=new MyFileFilter();
   mf.addFilter(".jpg");
   mf.addFilter(".gif");
   mf.setDesc("选择文件(*.jpg,*.gif)");

// this.fileDialog.setFileFilter(mf);
   this.fileDialog.addChoosableFileFilter(mf);

   fileDialog.addChoosableFileFilter(new MyFileFilter(".jpg","图像文件(*.jpg)"));
   fileDialog.addChoosableFileFilter(new MyFileFilter(".gif","图像文件(*.gif)"));

上面代码完成了 大家自己去试下吧


Global site tag (gtag.js) - Google Analytics