Java重写文件过滤器

Java中如果要在JFileChooser里添加文件过滤器,必须继承FileFilter抽象类,并实现其方法。

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.filechooser.FileFilter;

//实现FileFilter抽象类,其他自定义FileFilter皆为它的子类
public class MyFileFilter extends FileFilter {
	private String description;
	private List<String> extensions = new ArrayList<String>();
	
	//添加需要过滤的后缀名
	public void addExtension(String extension){
		if(!extension.startsWith(".")){
			extension = "." + extension;
		}
		this.extensions.add(extension.toLowerCase());
	}
	
	//添加对话框描述
	public void addDescription(String description){
		this.description = description;
	}

	//下面为必须重写的方法
	@Override
	public boolean accept(File f) {
		if(f.isDirectory()) return true;
		String name = f.getName().toLowerCase();
		for(String s : extensions){
			if (name.endsWith(s)) return true;
		}
		return false;
	}

	@Override
	public String getDescription() {
		return this.description;
	}

}

使用时直接创建对象并添加后缀名和描述信息即可。也可以给每一种过滤器创建一个类,比如Java文件过滤器。

/**
 * Java文件过滤器
 */
public class JavaFileFilter extends MyFileFilter {
    public JavaFileFilter(){
        super();
        this.addExtension("java");
        this.addDescription("Java文件(*.java)");
    }
}


你可能感兴趣的:(Java重写文件过滤器)