Pour filtrer les fichiers affichés par un JFileChooser vous devez utiliser un FileFilter (package javax.swing.filechooser). Cette classe abstraite définit deux méthodes :
- accept(File) : Cette méthode retourne un booléen indiquant si le fichier passé en paramètre est acceptable.
- getDescription() : Cette méthode retourne un String décrivant le filtre. C'est cette description qui sera affichée dans le JFileChooser.
Voici un exemple simple d'implémentation.
public class FiltreSimple extends FileFilter{
private String description;
private String extension;
public FiltreSimple(String description, String extension){
if(description == null || extension ==null){
throw new NullPointerException("La description (ou extension) ne peut être null.");
}
this.description = description;
this.extension = extension;
}
public boolean accept(File file){
if(file.isDirectory()) {
return true;
}
String nomFichier = file.getName().toLowerCase();
return nomFichier.endsWith(extension);
}
public String getDescription(){
return description;
}
}
L'utilisation se fait comme ceci :
FileFilter java = new FiltreSimple("Fichiers Java",".java");
FileFilter classes = new FiltreSimple("Fichiers Class",".class");
FileFilter jar = new FiltreSimple("Fichiers JAR",".jar");
JFileChooser chooser = new JFileChooser(".");
chooser.addChoosableFileFilter(java);
chooser.addChoosableFileFilter(classes);
chooser.addChoosableFileFilter(jar);
chooser.showOpenDialog(null);
Vous pouvez télécharger cet exemple ci-dessous.
Ce filtre simple ne prend en compte qu'une seule extension. Vous pouvez regarder les liens ci-dessous pour un exemple de filtre "extensible" (capable de prendre en compte plusieurs extensions de fichiers).
Une dernière remarque : le filtrage ne se fait pas nécessairement sur une extension de fichier. Pour l'exemple on a choisi cette possibilité car c'est ce qui est le plus couramment rencontré. Vous pouvez tout à fait faire des filtres sur les tailles des fichiers, leurs dates de dernière modification, etc.
|