Ouvrir une fenêtre de navigation dans les répertoires

     

Nous signalons par l'exemple de ce paragraphe qu'il existe une classe du paquetage javax.swing permettant d'afficher une fenêtre de dialogue destinée à ouvrir ou sauvegarder un fichier ; cette classe est la classe JFileChooser. La fenêtre de dialogue se présente comme toute fenêtre de même usage sous une autre application, avec en particulier la possibilité pour l'utilisateur de naviguer dans ses répertoires. On utilise ici la méthode showOpenDialog qui permet d'ouvrir un fichier à l'aide d'une fenêtre analogue à celle représentée sur l'image ci-dessus ; la méthode showSaveDialog, que nous n'utilisons pas dans l'exemple, sert à sauvegarder un fichier.

L'application qui nous sert d'exemple doit permettre à l'utilisateur :

import java.io.*;
import javax.swing.JFileChooser;

public class EssaiChoixFichier {
	public static void main(String[] arg) throws IOException {
		JFileChooser dialogue = new JFileChooser(".");
		PrintWriter sortie;
		File fichier;

		if (dialogue.showOpenDialog(null) ==  JFileChooser.APPROVE_OPTION) {
			fichier = dialogue.getSelectedFile();
			sortie = new PrintWriter(new FileWriter(fichier.getPath(), true));
			sortie.println(arg[0]);
			sortie.close();
		}
		System.exit(0);
	}
}
Le fichier EssaiChoixFichier.java
new JFileChooser(".") : la fenêtre de dialogue présentera au départ le contenu du répertoire dont le chemin est indiqué en argument. On peut aussi utiliser le constructeur sans paramètre qui conduirait à avoir une fenêtre de dialogue présentant à l'ouverture le contenu du répertoire de connexion.
dialogue.showOpenDialog(null) : cette instruction fait apparaître la fenêtre de dialogue permettant de sélectionner un fichier. Cette fenêtre est modale ; l'instruction renvoie une valeur au moment où la fenêtre est fermée. Cette valeur peut être APPROVE_OPTION ou bien CANCEL_OPTION. Le paramètre est de type Component et peut indiquer le composant « parent ».
new FileWriter(fichier.getPath(), true) : on utilise le constructeur de la classe FileWriter dont le premier paramètre spécifie le nom du fichier dans lequel il faut écrire et le second paramètre s'il faut effacer le contenu du fichier avant d'y écrire (valeur false) ou bien écrire à la fin du fichier (valeur true).
System.exit(0); : on doit quitter ainsi l'application, du fait de la création d'une interface graphique avec l'instanciation de la classe JFileChooser.

© Irène Charon, Télécom ParisTech 2011