Creare una finestra di scelta file con JFileChooser

DOMANDA:

Come si fa a visualizzare una finestra per la scelta di un file in Java?


RISPOSTA:

Java mette a disposizione la classe javax.swing.JFileChooser che permette di aprire con poche righe di codice una finestra di selezione (Dialog) per i file.

Guardiamo l'esempio con la classe FileDialog:
package file;

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

public class FileDialog {
  public static void main(String[] args) {
    
    // impostazione della directory di partenza
    JFileChooser fileScelto = new JFileChooser("C:\\");
    
    // creazione di due filtri
    FileFilter filtroJpg = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg");
    FileFilter filtroTxt = new FileNameExtensionFilter("TXT file", "txt");
    
    // inserisco nella scelta del tipo di file un filtro TXT
    fileScelto.addChoosableFileFilter(filtroTxt);
    // di default filtro solo i file Jpg (lo aggiunge in automatico alla combo sottostante)
    fileScelto.setFileFilter(filtroJpg);
    // imposto di default il nome del file da cercare
    fileScelto.setSelectedFile(new File("immagine.jpg"));

    int selezione = fileScelto.showDialog(null, "Seleziona il file da aprire");
    if(selezione == JFileChooser.APPROVE_OPTION)
      System.out.println(fileScelto.getSelectedFile());
  }
}

Quindi eseguendo l'esempio ci aspettiamo l'apertura di una finestra di questo tipo:

JFileChooser - All'apertura

...e nella select "Tipo File" i filtri personalizzati.

JFileChooser - Combo di selezione Tipo File (Filtri)
Ora che abbiamo visto l'effetto grafico, anche se i commenti all'interno del codice chiarificano già lo scopo delle singole righe, analizziamo brevemente qualche istruzione.

Creando i filtri (javax.swing.filechooser.FileFilter) possiamo scremare la scelta del tipo di file a seconda delle nostre esigenze. Nell'esempio abbiamo creato un filtro per i file Jpeg e uno per i Txt. Il primo parametro ("JPEG file") è una semplice stringa che fornisce un'etichetta (visibile nella select Tipo file) associata agli effettivi filtri. Gli altri parametri (variabili da 1 a n) identificano le estensioni dei file da filtrare (nel nostro caso .jpg e .jpeg).

Il metodo addChoosableFileFilter(), applicato sul FileChooser, aggiunge nella select dei tipi di file il filtro passato come parametro (nell'esempio filtroTxt con etichetta TXT file e associazione con le estensioni .txt).

Invece con il metodo setFileFilter(), applicato sempre al FileChooser, stiamo impostando, all'apertura della finestra, un filtro di default sui file. Da notare che setFileFilter() in automatico aggiunge una voce alla select dei tipi di file.

Infine setSelectedFile() imposta, sempre all'apertura, il nome del file che ci aspettiamo di aprire (nel nostro caso immagine.jpg).

Per ulteriori personalizzazioni ed approfondimenti vi rimando alla relativa pagina della documentazione di JFileChooser



Commenti

Post popolari in questo blog

Arrotondamento e troncamento in Java

Eclipse: Shortcuts (scorciatoie) da tastiera

Strutture dati: List, Set, Map

Creare un eseguibile Java