Literatur

FileFilter

Damit wir unseren JFileChooser effizienter einsetzen können, können wir einen FileFilter verwenden. Damit können wir z.B. die Auswahl von Dateien auf bestimmte Endungen wie .txt beschränken.

In der Java Version 1.5 musste man sich einen solchen FileFilter über die abstrakte Klasse oder das Interface java.io.FileFilter selbst erstellen. Ab der Java Version 1.6 gibt es eine schon vorgefertigte Klasse FileNameExtensionFilter, die wir nur noch an unsere Zwecke anpassen müssen.

Die Klasse FileNameExtensionFilter ist sehr einfach zu verwenden. Schauen wir uns einmal die Erzeugung eines solchen Objektes an:

FileFilter filter = new FileNameExtensionFilter("Textdatei", "txt");

Da die Klasse FileNameExtensionFilter von der Klasse FileFilter abgeleitet ist, können wir Objekte dieser Klasse als FileFilter verwenden. Der Konstruktor erwartet mindestens zwei Parameter. Beim ersten Parameter handelt es sich um die Beschreibung des Filters. Anschließend folgen alle Endungen, die mit diesem Filter erfasst werden sollen.

Jetzt wollen wir einen FileFilter für Bilddateien in unser JFileChooser-Beispiel integrieren:

 
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
 
public class FileFilterBeispiel
{
     public static void main(String[] args)
    {
        // Erstellung unseres FileFilters für Bilddateien
        FileFilter filter = new FileNameExtensionFilter("Bilder", 
            "gif", "png", "jpg");         
        JFileChooser chooser = new 
            JFileChooser("c:/programmierung/beispieldateien");
        // Filter wird unserem JFileChooser hinzugefügt
        chooser.addChoosableFileFilter(filter);
        // Erzeugung eines neuen Frames mit dem Titel "Dateiauswahl"
        JFrame meinJFrame = new JFrame("Dateiauswahl");
        // Wir setzen die Breite auf 450 und die Höhe auf 300 Pixel
        meinJFrame.setSize(450,300);
        // Hole dir den ContentPane und füge diesem unseren JColorChooser hinzu
        meinJFrame.getContentPane().add(chooser);
        // Wir lassen unseren Frame anzeigen
        meinJFrame.setVisible(true);
    }
}

In dem obigen Beispiel erzeugen wir erst ein Objekt der Klasse FileNameExtensionFilter mit der Beschreibung "Bilder" und den gewünschten Dateiendungen. Der FileChooser öffnet sich im angegebenen Ordner und zeigt nur die Dateien an, die die vorgegebenen Dateiendungen haben. Ordner sind von diesem Filter nicht betroffen und werden immer angezeigt. Nachdem wir dann unseren FileChooser erstellt haben fügen wir über die Methode addChoosableFileFilter unseren zuvor erzeugten FileFilter hinzu. Den restlichen Java-Quellcode kennen Sie ja bereits.

Nach dem Ausführen des obigen Java-Quellcodes erhalten Sie folgendes Bild:

Auf diese Art und Weise können in Java auch mehrere FileFilter verwendet werden. Für einen "Öffnen"-Dialog kann z.B. so auch ein anderer FileFilter verwendet werden als im "Speichern"-Dialog. Für ein JFileChooser-Objekt können aber auch mehrere unterschiedliche FileFilter definiert werden.