JFileChooser | Java Swing
JFileChooser fait partie du package java Swing. JFileChooser est un moyen simple et efficace d’inviter l’utilisateur à choisir un fichier ou un répertoire. Dans ce tutoriel nous allons découvrir comment utiliser JFileChooser dans Java Swing.
Les constructeurs de la classe JFileChooser sont:
| JFileChooser() | Constructeur vide qui pointe vers le répertoire par défaut de l’utilisateur. |
| JFileChooser(String) | Utilise le chemin donné |
| JFileChooser(File) | Utilise le fichier donné comme chemin |
| JFileChooser(FileSystemView) | Utilise FileSystemView donné |
| JFileChooser(String, FileSystemView) | Utilise le chemin d’accès donné et FileSystemView |
| JFileChooser(File, FileSystemView) | Utilise le répertoire courant donné et FileSystemView |
Exemple: Ouvrez ou enregistrez un fichier
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
public class Main
{
public static void main(String[] args)
{
JFileChooser choose = new JFileChooser(
FileSystemView
.getFileSystemView()
.getHomeDirectory()
);
// Ouvrez le fichier
int res = choose.showOpenDialog(null);
// Enregistrez le fichier
// int res = choose.showSaveDialog(null);
if (res == JFileChooser.APPROVE_OPTION) {
File file = choose.getSelectedFile();
System.out.println(file.getAbsolutePath());
}
}
}
Notez que les deux méthodes showOpenDialog() et showSaveDialog() sont similaires, ce qui fait la différence, c’est la façon dont le développeur gère chacune d’elles.
Sortie:


Sortie:
C:\Users\Pc\Desktop\java-tuto\tuto-java.jpg
Exemple: Sélectionnez des fichiers ou des répertoires
Avec cette méthode, nous pouvons limiter l’utilisateur à sélectionner soit des répertoires uniquement (JFileChooser.DIRECTORIES_ONLY) ou des fichiers uniquement (JFileChooser.FILES_ONLY) ou des fichiers et répertoires (JFileChooser.FILES_AND_DIRECTORIES). La valeur par défaut est FILES_ONLY. Voici un exemple qui implémente JFileChooser.DIRECTORIES_ONLY:
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
public class Main
{
public static void main(String[] args)
{
JFileChooser choose = new JFileChooser(
FileSystemView
.getFileSystemView()
.getHomeDirectory()
);
choose.setDialogTitle("Choisissez un repertoire: ");
choose.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int res = choose.showSaveDialog(null);
if(res == JFileChooser.APPROVE_OPTION)
{
if(choose.getSelectedFile().isDirectory())
{
System.out.println("Vous avez selectionne le repertoire: "+ choose.getSelectedFile());
}
}
}
}
Sortie:

Sortie:
Vous avez selectionne le repertoire: C:\Users\Pc\Desktop
Exemple: Filtrer les fichiers
Si, par exemple, votre programme nécessite des images jpg et gif, il serait plus pratique de limiter la sélection de l’utilisateur à cela. L’exemple ci-dessous montre comment y parvenir à l’aide de la classe FileNameExtensionFilter personnalisé:
import javax.swing.JFileChooser;
import javax.swing.filechooser.*;
public class Main
{
public static void main(String[] args)
{
JFileChooser choose = new JFileChooser(
FileSystemView
.getFileSystemView()
.getHomeDirectory()
);
choose.setDialogTitle("Selectionnez une image");
choose.setAcceptAllFileFilterUsed(false);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Images JPG et GIF", "jpg", "gif");
choose.addChoosableFileFilter(filter);
int res = choose.showOpenDialog(null);
if (res == JFileChooser.APPROVE_OPTION) {
System.out.println(choose.getSelectedFile().getPath());
}
}
}
Sortie:

Comme vous pouvez le voir, l’utilisateur n’est pas autorisé à choisir autre chose. Le répertoire illustré ci-dessus contient également d’autres types d’images, mais seuls jpg et gif sont affichés à l’utilisateur.

