Literatur

JFileChooser

Eine sehr häufige Verwendungsart für ein Dialogfenster ist das Speichern und Öffnen von Dateien. Ohne solch einen Dialog kommt fast kaum eine Anwendung aus. Für diesen Zweck wurde in Java mit der Klasse javax.swing.JFileChooser ein vorgefertigter Dialog zur Verfügung gestellt. Dieser bietet einen Datei-Explorer und Buttons zum Öffnen bzw. Speichern und Abbrechen. Man kann aber auch einen vorgefertigten Dialog ein wenig anpassen.

Möchte man den Dialog direkt in eine Anwendung integrieren, so kann ein Objekt der Klasse JFileChooser einem Container hinzugefügt werden.

Schauen wir uns direkt einmal ein Beispiel an.

import javax.swing.JFileChooser;
 
public class OeffnenDialog
{
    public static void main(String[] args)
    {
        // JFileChooser-Objekt erstellen
        JFileChooser chooser = new JFileChooser();
        // Dialog zum Oeffnen von Dateien anzeigen
        chooser.showOpenDialog(null);
    }
}

Zuerst erstellen wir uns ein Objekt der Klasse JFileChooser. Eine statische Methode, um einen solchen Dialog direkt zu öffnen, wie bei der Klasse JColorChooser, gibt es hier nicht. Anschließend lassen wir uns über die Methode showOpenDialog den Dialog zum Öffnen von Dateien anzeigen. Da die Klasse nur modale Dialoge bereitstellt, erwartet die Methode als Parameter eine Elternkomponente, damit diese, während der Dialog angezeigt wird, blockiert werden kann. Da wir aber in diesem einfachen Beispiel kein übergeordnetes Fenster haben, übergeben wir null. Das folgende Screenshot zeigt unseren Dialog, der beim Ausführen des obigen Quellcodes angezeigt wird.

JFileChooser Öffnen Dialog

Wie Sie an dem Screenshot sehen, ist der Titel des Dialoges und der linken Schaltfäche mit dem Text "Öffnen" versehen. Dies geschieht durch den Aufruf der Methode showOpenDialog. Hätte man stattdessen die Methode showSaveDialog aufgerufen, würde an der Stelle ein "Speichern"-Button erscheinen.

import javax.swing.JFileChooser;
 
public class SpeichernDialog
{
    // main-Methode
    public static void main(String[] args)
    {
        // JFileChooser-Objekt erstellen
        JFileChooser chooser = new JFileChooser();
        // Dialog zum Speichern von Dateien anzeigen
        chooser.showSaveDialog(null);
    }
}

Analog zu dem Screenshot oben sieht der Screenshot für den Speicherndialog wie folgt aus:

JFileChooser speichern Dialog showSaveDialog

Man kann den Titel des Dialoges und die Beschriftung der linken Schaltfläche auch selbst bestimmen. Dafür gibt es die Methode showDialog. Diese Methode unterscheidet sich von den zuvor genannten Methoden nur in einem weiteren Parameter vom Typ String. Dabei handelt es sich um den Text, welcher als Dialogtitel und Beschriftung der linken Schaltfläche erscheinen soll.

Beispiel:

import javax.swing.JFileChooser;
 
public class MachWasDialog
{
    public static void main(String[] args)
    {
        // JFileChooser-Objekt erstellen
        JFileChooser chooser = new JFileChooser();
        // Dialog zum Speichern von Dateien anzeigen
        chooser.showDialog(null, "MACH WAS");
    }
}

Der entsprechende Screenshot sieht dann wie folgt aus. Wie Sie sehen, hat sich jetzt der Titel und der Text der Schaltfläche  im Vergleich zu den obigen Screenshots auf "MACH WAS" geändert.

JFileChooser MACH WAS

In den Beispielen würde bei einem Klick auf "Speichern" oder "Öffnen" nichts passieren, denn die Funktionalität der Schaltflächen muss von Ihnen programmiert werden. Wir nehmen jetzt einmal das erste Beispiel und erweitern es um die Ausgabe des Namens der ausgewählten Datei.

import javax.swing.JFileChooser;
 
public class OeffnenDialog
{
    public static void main(String[] args)
    {
        // JFileChooser-Objekt erstellen
        JFileChooser chooser = new JFileChooser();
        // Dialog zum Oeffnen von Dateien anzeigen
        int rueckgabeWert = chooser.showOpenDialog(null);
        
        /* Abfrage, ob auf "Öffnen" geklickt wurde */
        if(rueckgabeWert == JFileChooser.APPROVE_OPTION)
        {
             // Ausgabe der ausgewaehlten Datei
            System.out.println("Die zu öffnende Datei ist: " +
                  chooser.getSelectedFile().getName());
        }
    }
}

Da der Dialog modal ist, bekommen wir nach dem Betätigen der Schaltfläche "Öffnen" oder "Abbrechen" einen Wert zurückgeliefert. Dieser Wert hat entweder den Wert der Konstanten APPORVE_OPTION der Klasse JFileChooser für die Betätigung der "Öffnen"-Schaltfläche bzw. den der Konstanten CANCEL_OPTION für die "Abbrechen"-Schaltfläche. Mit der nachfolgenden if-Anweisung überprüfen wir, ob die "Öffnen"-Schaltfläche betätigt wurde. Sollte diese angeklickt worden sein, so geben wir den ausgewählten Dateinamen aus. Der JFileChooser stellt die Methode getSelectedFile zur Verfügung, damit wir in unserem Programm mit der ausgewählten Datei arbeiten können. Diese liefert uns ein Objekt der Klasse File zurück. Auf die Klasse File kommen wir im nächsten Unterkapitel zu sprechen.

Wir wollen jetzt ein Beispiel anbringen, wie Sie ein Objekt der Klasse JFileChooser in einen eigenen Frame einbetten. Sehen wir uns dazu folgendes Beispiel an:

import javax.swing.JFileChooser;
import javax.swing.JFrame;
 
public class Main
{
    public static void main(String[] args)
    {
 
        JFileChooser chooser = new JFileChooser();
        // Erzeugung eines neuen Frames mit dem Titel "Dateiauswahl"
        JFrame meinJFrame = new JFrame("Dateiauswahl");
        // Wir setzen die Breite auf 450 und die Höhe 300 pixel
        meinJFrame.setSize(450,300);
        // Hole den ContentPane und füge diesem unseren JFileChooser hinzu      
        meinJFrame.getContentPane().add(chooser);
        // Wir lassen unseren Frame anzeigen
        meinJFrame.setVisible(true);
    }
}

Wie Sie sehen, ist das Hinzufügen eines JFileChooser-Objektes genauso einfach wie bei einem JColorChooser-Objekt im vorigen Kapitel. Der nun folgende Screenshot zeigt Ihnen unseren JFrame mit unserem hinzugefügten JFileChooser-Objekt.

JFileChooser in einem JFrame

Das JFileChooser-Objekt wird beim Aufruf des Konstruktors standardmäßig so initialisiert, als wäre es ein Dateiauswahlfenster zum Öffnen von Dateien. Möchte man einen Speichern-Dialog implementieren, dann sollte man, bevor man ihn in den Frame einbettet, den Dialotypen mitteilen, d.h., ob er zum "Speichern" oder "Öffnen" verwendet werden soll. Dieses kann man über die Methode setDialogType steuern. Die Methode sieht wie folgt aus:

void setDialogType(int dialogType)

Diese Methode hat keinen Rückgabewert und erwartet einen Dialogtypen, der über die Konstanten SAVE_DIALOG bzw. OPEN_DIALOG der Klasse JFileChooser festgelegt werden kann. Ein beispielhafter Aufruf wäre z.B. folgender:

chooser.setDialogType(JFileChooser.SAVE_DIALOG);

 



Unterthemen: