Ein Öffnen-Dialog zum öffnen von Dateien und Verzeichnissen

Die Klasse JFileChooser ermöglicht das Öffnen von Dateien und Verzeichnissen und stellt Felder und Methoden bereit, die eine vielfältige Konfiguration ermöglichen.

Das Beispiel definiert eine Methode oeffnen(), die die Routine zum Erzeugen eines Öffnen-Dialoges enthält.
In ihr wird zunächst ein Objekt vom Typ JFileChooser erzeugt, der über das Feld JFileChooser.OPEN_DIALOG als Öffnen-Dialog ausgewiesen wird. Die JFileChooser-Methode setFileSelectionMode() nimmt einen int-Wert in Form des Feldes FILES_AND_DIRECTORIES entgegen, der bestimmt, dass der Dialog sowohl Verzeichnisse als auch Dateien zeigt. Das Ausgangsverzeichnis lässt sich durch die Methode setCurrentDirectory() festlegen.

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;

import javax.swing.JFileChooser;

public class OeffnenDialogClass {

    public static void main(String[] args) {
        OeffnenDialogClass odc = new OeffnenDialogClass();
        odc.oeffnen();
    }

    private void oeffnen() {
        final JFileChooser chooser = new JFileChooser("Verzeichnis wählen");
        chooser.setDialogType(JFileChooser.OPEN_DIALOG);
        chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        final File file = new File("/home");

        chooser.setCurrentDirectory(file);

        chooser.addPropertyChangeListener(new PropertyChangeListener() {
            public void propertyChange(PropertyChangeEvent e) {
                if (e.getPropertyName().equals(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY)
                        || e.getPropertyName().equals(JFileChooser.DIRECTORY_CHANGED_PROPERTY)) {
                    final File f = (File) e.getNewValue();
                }
            }
        });

        chooser.setVisible(true);
        final int result = chooser.showOpenDialog(null);

        if (result == JFileChooser.APPROVE_OPTION) {
            File inputVerzFile = chooser.getSelectedFile();
            String inputVerzStr = inputVerzFile.getPath();
            System.out.println("Eingabepfad:" + inputVerzStr);
        }
        System.out.println("Abbruch");
        chooser.setVisible(false);
    }
}

Um beim Wechsel der jeweiligen Auswahl diese zu aktualisieren, wird der Dialog bei einem PropertyChangeListener angemeldet, der dies übernimmt. Dann wird der Dialog sichtbar gesetzt und geöffnet.
Für die Abfrage der betätigten Buttons stellt die Klasse mehrere int-Werte als Felder bereit, die bei Bedarf abgefragt werden können. Im Beispiel wird bei Betätigen des ok-Buttons die ausgewählte Datei als File-Objekt erfasst und dessen Pfad schließlich auf der Kommandozeile angezeigt. Abschließend wird der Dialog wieder unsichtbar gesetzt.