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:
- Das JFileChooser Objekt wird als Instanzvariable definiert. Somit behält es seinen Zustand und öffnet beim nächsten Klick wieder das zuletzt verwendete Verzeichnis.
- Um ein Dialogfenster zu öffnen, das nach existierenden Dateien oder Verzeichnissen sucht, ruft man showOpenDialog. Die Methode liefert einen Status als int-Wert.
- 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.
- Wenn der Status APPROVE_OPTION ist, kann man die gewählte Datei mit getSelectedFile abfragen.
- 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.