通过filename过滤filechooser

我学会了如何使用filefilter来使用filter。

FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg"); 

但我想用包含某些字符串的文件过滤我的filechooser,就像在文件名中包含“sample”一样。

只能选择具有这些字符串的文件,并且不能编辑此filter。 我该怎么做?

 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());