Christophe Jacquet: Research and Teaching

Enseignement > Exemples en Java >

Swing : afficher une boîte de dialogue de sélection de fichier

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());

	}
}