next up previous contents
Nächste Seite: Layout Aufwärts: Dialoge Vorherige Seite: Dateiauswahl-Dialog   Inhalt

Die Schnittstelle FileFilter verwenden

FileFilter lässt die Anzeige und Auswahl bestimmter Dateitypen zu. Im folgenden Beispiel sollen lediglich JAVA-Quelldateien (oder alle Dateien) angezeigt werden:

import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;

public class DateiAuswahl {
    public static void main (String [] args) {
        JFileChooser fc = new JFileChooser();
        fc.setDialogTitle("DateiAuswahl");
        fc.setFileFilter(new FileFilter() {
                public boolean accept(File f) {
                    return f.getName().toLowerCase().endsWith(".java") || f.isDirectory();
                }
                public String getDescription() {
                    return "Java-Applikationen(*.java)";
                }
            });
        if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            File file = fc.getSelectedFile();
            System.out.println(file.getName());
        }
        else System.out.println("Keine Auswahl :-(");
        System.exit(0);
    }
}

Die FileFilter - Schnittstelle wird im obigen Beispiel durch eine so genannte innere anonyme Klasse implementiert: Der gesamte Code wird als Argument der JFileChooser - Methode setFileFilter() angegeben. Dabei müssen jedenfalls die accept() - Methode und die getDescription() - Methode verwendet werden. Im Beispiel werden Dateiverzeichnisse (die mit der File - Methode isDirectory() klassifiziert werden) und Dateien mit der Endung ``.java'' angezeigt.

Die JFileChooser - Methode showOpenDialog(null) liefert einen Wert, der der jeweils betätigten Schaltfläche zugeordnet wird. Mit Hilfe geeigneter Methoden (im Beispiel getSelectedFile() kann der Name der ausgewählten Datei weiterverwendet werden. Wird nicht die ``Öffnen''-Schaltfläche betätigt, so wird der Hinweis ``Keine Auswahl :-(`` ausgegeben und das Programm mit Hilfe der System - Methode exit(0) beendet.



Alfred Nussbaumer 2003-02-10