La classe FileDialog, dérivée de la classe Dialog, permet d'obtenir les boîtes de sélection de fichiers fournies par le système.
Le constructeur attend 3 paramètres :
On pourra donc construire une boîte de sélection de fichiers en écrivant :
FileDialog fDial=new FileDialog(this, "Ouvrir", FileDialog.LOAD);
en supposant que this représente ici la fenêtre d'une application qui est donc de classe Frame.
Pour utiliser la boîte de sélection de fichiers on fera appel aux méthodes :
Ecrivons une application nommée ChoixFichier qui permet de sélectionner un fichier et qui affiche son nom dans une zone de texte.
On utilise deux variables : zoneTexte qui pointe sur la zone de texte et fDial qui est la boîte de sélection de fichiers.
import java.awt.*;
import java.awt.event.*;
public class ChoixFichier extends Frame
implements ActionListener {
TextArea zoneTexte=new TextArea();
FileDialog fDial;
Le constructeur initialise la boîte de sélection de fichiers, insère la zone texte, crée un menu et affiche la fenêtre.
public ChoixFichier() {
super("Sélection de fichiers");
fDial=new FileDialog(this, "Choisir", FileDialog.LOAD);
// Définition et affichage du système de menus
MenuBar mb=new MenuBar();
setMenuBar(mb);
Menu m1=new Menu("Fichier");
mb.add(m1);
MenuItem mi1=new MenuItem("Sélection...");
mi1.setActionCommand("select");
m1.add(mi1);
mi1.addActionListener(this);
MenuItem mi2=new MenuItem("Quitter");
mi2.setActionCommand("quitter");
m1.add(mi2);
mi2.addActionListener(this);
//zone texte
add(BorderLayout.CENTER,zoneTexte);
zoneTexte.setEditable(false);
//fermeture de la fenêtre
addWindowListener(new Fermeture());
//taille et position
pack();
setBounds(50,50,300,400);
//affichage
setVisible(true);
}
Le menu propose deux commandes : Sélection et Quitter. C'est la commande Sélection qui provoque l'affichage de la boîte de sélection de fichiers.
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("quitter")) System.exit(0);
else if (e.getActionCommand().equals("select")) {
fDial.setVisible(true);
String nom=fDial.getFile();
if (nom!=null) {
String dir=fDial.getDirectory();
zoneTexte.append(dir+nom+"\n");
}
else zoneTexte.append("Sélection annulée.\n");
}
}
Il reste à écrire la méthode main et à créer la classe interne Fermeture qui gèrera la fermeture de la fenêtre.
public static void main(String args[]) {
System.out.println("Ouverture de l'application...");
ChoixFichier fr=new ChoixFichier();
}
/**
* Gestion de l'événement Case de fermeture
*/
class Fermeture extends WindowAdapter {
public void windowClosing(WindowEvent event) {
System.exit(0);
}
}
}