JFileChooser | Java Swing

image_pdfimage_print

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:
Constructeur JFileChooser
Description
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.
 
Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *