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)");
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。