我学习了如何使用filefilter来使用过滤器。
FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg");
但是我想用包含某些字符串的文件来过滤我的filechooser,比如有" sample"在他们的文件名中。
只能选择具有这些字符串的文件,并且此过滤器不能编辑。我该怎么办?
答案 0 :(得分:1)
public class ImageFilter extends FileFilter {
//Accept all directories and all jpeg, jpg files with lossy in its filename.
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
String extension = Utils.getExtension(f);
String filename = Utils.getName(f);
if (extension != null) {
if ((extension.equals(Utils.jpeg) || extension.equals(Utils.jpg)) && filename.contains("lossy")) {
return true;
} else {
return false;
}
}
return false;
}
//The description of this filter
public String getDescription() {
return "Images (Lossy)";
}
}
这是我的utils类
public class Utils {
public final static String jpeg = "jpeg";
public final static String jpg = "jpg";
/*
* Get the extension of a file.
*/
public static String getExtension(File f) {
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i+1).toLowerCase();
}
return ext;
}
public static String getName(File f) {
String fname = null;
String s = f.getName();
int i = s.length() - s.lastIndexOf('.');
fname = s.substring(0,s.length()-i);
return fname;
}
/** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = Utils.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
}
申请,
fc.addChoosableFileFilter(new ImageFilter());