教你用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)"));
上面代码完成了 大家自己去试下吧
|