Dans une application graphique, on a souvent besoin de demander à l'utilisateur de sélectionner un fichier. Swing propose une classe prête à l'emploi, JFileChooser
. Cependant, utilisée sans précaution, elle affiche par défaut le répertoire personnel de l'utilisateur, ce qui peut rendre la sélection d'un fichier fastidieuse. Cet exemple explique comment lui faire afficher par défaut le répertoire courant.
/* ############################################################################ * * SelectionFichier.java : utilisation des boîtes de dialogue de sélection de * fichier de Swing. * * Notamment, l'exemple numéro 2 explique comment créer * une boîte de dialogue qui s'ouvre dans le répertoire * courant, et pas dans le répertoire "home" de * l'utilisateur. * * Auteur : Christophe Jacquet, Supélec * * Historique * 2008-07-08 Création * * ############################################################################ */ import java.io.File; import java.io.IOException; import javax.swing.JFileChooser; public class SelectionFichier { public static void main(String[] args) { // Exemple numéro 1 // Boîte de sélection de fichier à partir du répertoire // "home" de l'utilisateur { // création de la boîte de dialogue JFileChooser dialogue = new JFileChooser(); // affichage dialogue.showOpenDialog(null); // récupération du fichier sélectionné System.out.println("Fichier choisi : " + dialogue.getSelectedFile()); } // Exemple numéro 2 // Boîte de sélection de fichier à partir du répertoire courant File repertoireCourant = null; try { // obtention d'un objet File qui désigne le répertoire courant. Le // "getCanonicalFile" n'est pas absolument nécessaire mais permet // d'éviter les /Truc/./Chose/ ... repertoireCourant = new File(".").getCanonicalFile(); System.out.println("Répertoire courant : " + repertoireCourant); } catch(IOException e) {} // création de la boîte de dialogue dans ce répertoire courant // (ou dans "home" s'il y a eu une erreur d'entrée/sortie, auquel // cas repertoireCourant vaut null) JFileChooser dialogue = new JFileChooser(repertoireCourant); // affichage dialogue.showOpenDialog(null); // récupération du fichier sélectionné System.out.println("Fichier choisi : " + dialogue.getSelectedFile()); } }