Vorlesung Informatik 2 - Teil A: Java Kurs

6.3 Die Klasse JFileChooser

Ein JFileChooser Objekt ist ein interaktiver Dialog zur Auswahl von Dateien oder Verzeichnissen. 

Um ein einfaches File-Dialogfenster zu verwenden geht man wie folgt vor:

  1. Das JFileChooser Objekt wird als Instanzvariable definiert. Somit behält es seinen Zustand und öffnet beim nächsten Klick wieder das zuletzt verwendete Verzeichnis.
  2.  Um ein Dialogfenster zu öffnen, das nach existierenden Dateien oder Verzeichnissen sucht,  ruft man showOpenDialog. Die Methode liefert einen Status als int-Wert.
  3. Der Status ist APPROVE_OPTION wenn der Benutzer eine Datei gewählt hat, CANCEL_OPTION falls er den Dialog abgebrochen hat oder ERROR_OPTION im Fehlerfall.
  4. Wenn der Status APPROVE_OPTION ist, kann man die gewählte Datei mit getSelectedFile abfragen.
  5. Will man eine neue Datei erzeugen ruft man showDialog(null, "Neu"), dabei ist der String "Neu" die Beschriftung der Schaltfläche zum Abschluss des Dialogs.

Ein einfaches Beispiel:

   JFileChooser fc = new JFileChooser();
   int status = fc.showOpenDialog(null);
   if(status==JFileChooser.APPROVE_OPTION) {
       File datei = fc.getSelectedFile();
       ...
     }

Statt null kann der Parameter der showOpenDialog Methode auf eine Swing-Component zeigen, dann sperrt  der Dialog die Anwendung und man spricht von einem modalen Dialog.

Soll der Dialog in einem Bestimmten Verzeichnis starten, verwendet man den Konstruktor JFileChooser(verzeichnis:File) oder die Methode setCurrentDirectory(verzeichnis:File).

Der folgende Dialog startet im Unterverzeichnis 'src' des aktuellen Verzeichnisses und zeigt die Schaltfläche 'Öffnen': 

		   JFileChooser fc = new JFileChooser(new File("./src"));
   int status2 = fc.showDialog(null, "Öffnen");
   if(status2==JFileChooser.APPROVE_OPTION) {
       File datei = fc.getSelectedFile();
   }


Allerdings sollte man vorher sicherstellen, dass das Unterverzeichnis src existiert.

Oft möchte man spezifisch nur nach Dateien oder nur nach Verzeichnissen suche, dann ruft man setFileSelectionMode(mode), wobei mode entweder JFileChooser.FILES_ONLY oder DIRECTORIES_ONLY ist.


Als weitere Möglichkeit kann man Filter definieren, um die Auswahl auf bestimmte Dateiendungen zu beschränken:

 

  FileNameExtensionFilter filter = new FileNameExtensionFilter("Java und Sound", "java", "mp3");
  fc.setFileFilter(filter);
 



Der erste Parameter ist ein Beschreibungstext, alle weiteren Parameter sind erlaubte Erweiterungen für Dateinamen.

Weitere Optionen und Möglichkeiten von JFileChooser finden Sie in der API Beschreibung.


Lehrvideo