Filtrar los ficheros aceptados por el JFileChooser

3399 vistas

Para filtrar los ficheros mostrados por un JFileChooser tendremos que usar un FileFilter (package javax.swing.filechooser). Esta clase abstracta define dos métodos:

  • accept(File): devuelve un boolean indicando si el fichero pasado por parámetro cumple las condiciones.
  • getDescription(): devuelve un String que describe el fichero. Esta descripción será la que se mostrará en el JFileChooser.

Veamos un ejemplo de implementación:



java
  1. public class FiltreSimple extends FileFilter{
  2.   // descripción y extensión aceptada pr el filto
  3.   private String description;
  4.   private String extension;
  5.  
  6.   // contructor a partir de la descripvión y la extensión aceptada
  7.   public FiltreSimple(String description, String extension){
  8.       if(description == null || extension ==null){
  9.         throw new NullPointerException("La descripción (o extensión) no pueden ser null.");
  10.       }
  11.       this.description = description;
  12.       this.extension = extension;
  13.   }
  14.  
  15.   // Implementación del FileFilter
  16.   public boolean accept(File file){
  17.       if(file.isDirectory()) {
  18.         return true;
  19.       }
  20.       String nombreFichero = file.getName().toLowerCase();
  21.       return nombreFichero.endsWith(extension);
  22.   }
  23.   public String getDescription(){
  24.       return description;
  25.   }
  26. }



Forma de uso:



java
  1. FileFilter java = new FiltreSimple("Ficheros Java",".java");
  2. FileFilter classes = new FiltreSimple("Ficheros Class",".class");
  3. FileFilter jar = new FiltreSimple("Ficheros JAR",".jar");
  4. JFileChooser chooser = new JFileChooser(".");
  5. chooser.addChoosableFileFilter(java);
  6. chooser.addChoosableFileFilter(classes);
  7. chooser.addChoosableFileFilter(jar);
  8. chooser.showOpenDialog(null);



Este filtro sólo controla una extensión. Mira las demás FAQs para ver más posibilidades.

Nota: el filtro no necesariamente debe hacerse sobre una extensión, también se puede hacer sobre el tamaño, su fecha de modificación,...