Reputation:
I learned how to use filter using filefilter.
FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg");
But I want to filter my filechooser with files containing certain strings in them like having "sample" in their filenames.
Only files that does have these strings can be chosen and this filter must not be editable. How can I do it?
Upvotes: 4
Views: 757
Reputation:
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)";
}
}
and this is my utils class
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;
}
}
}
to apply,
fc.addChoosableFileFilter(new ImageFilter());
Upvotes: 2