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); } } }