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.