Jeg har lavet dette generiske filefilter til et projekt på arbejdet hvor jeg skulle bruge netop dette.
Nå du opretter filteret giver du filtype med som den acceptere, samt en beskrivelse af dette filter, værsgo at bruge klassen :-)
import javax.swing.filechooser.FileFilter;
import java.io.File;
/**
* Generic file filter, where you can set the accepted filetypes in runtime.
*
* <p><strong>Copyright @ Lars Udengaard.</strong> This project is under under licens.<br>
* Go to <a href="http://www.udengaard.org/appletstreamer-project/">http://www.udengaard.org/appletstreamer-project/</a> for more information.</p>
*
* @author Lars Udengaard
* @version 0.01
*/
public class GenericFileFilter extends FileFilter {
private String fileType;
private String description;
/** Creates a new instance of GenericFileFilter */
public GenericFileFilter(String fileType, String description) {
this.fileType = fileType;
this.description = description;
}
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
if (fileType.compareToIgnoreCase(getExtension(file)) == 0) {
return true;
}
return false;
}
public String getDescription() {
return description;
}
private String getExtension(File file) {
String ext = null;
String s = file.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i+1).toLowerCase();
}
return ext;
}
}
For at du kan så tilføje følgende til din openFile() metode, således den kun acceptere 1 fil af gangen, samt kun .txt:
fc.setMultiSelectionEnabled(false);
fc.setFileFilter(new GenericFileFilter("txt", "Tekst filer"));
Værsgo :-)