Sascha's Wiki

JFileChooser verwenden

Imports

import javax.swing.JFileChooser;

JFileChooser mit Einfachachauswahl erzeugen

//Erzeuge neuen JFileChooser
JFileChooser chooser = new JFileChooser();    
//Filtern der Auswahlmöglichkeiten                //Beschreibung     //Extension
chooser.setFileFilter(new FileNameExtensionFilter("Image File .jpg" ,"jpg")); 
//Titel des Dialogs festlegen  
chooser.setDialogTitle("Öffne Image File");
//Typ des Dialogs festlegen
chooser.setDialogType(JFileChooser.OPEN_DIALOG);
//ActionListener dem Filechooser hinzufügen
chooser.addActionListener(new ActionListener() {
    @Override
    //Action Inhalt definieren
    public void actionPerformed(ActionEvent e) {
        //Angeben was mit dem Dialog nach dem Klicken auf öffnen geschehen soll
        if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)) {
            //Ausgewähltes File einer Variable zuordnen
            File file = chooser.getSelectedFile();
            //Prüfen ob das File existiert falls nicht abbrechen     
            File filePath = file.getAbsoluteFile();
            if (filePath == null) {
                return;
            }
            /*
            *
            * Angeben was mit dem File geschehen soll
            *
            */
        }
    });
    chooser.showOpenDialog(null)
}

JFileChooser mit Mehrfachauswahl erzeugen

//Erzeuge neuen JFileChooser
JFileChooser chooser = new JFileChooser();    
//Filtern der Auswahlmöglichkeiten                 //Beschreibung    //Extension
chooser.setFileFilter(new FileNameExtensionFilter("Image File .jpg","jpg")); 
//Titel des Dialogs festlegen  
chooser.setDialogTitle("Öffne Image File");
//Typ des Dialogs festlegen
chooser.setDialogType(JFileChooser.OPEN_DIALOG);
//ActionListener dem Filechooser hinzufügen
chooser.addActionListener(new ActionListener() {
    @Override
    //Action Inhalt definieren
    public void actionPerformed(ActionEvent e){
        //Angeben was mit dem Dialog nach dem Klicken auf öffnen geschehen soll
        if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)) {
            //Ausgewählte Files in ein Array
            File[] files = chooser.getSelectedFile();
            //für jedes File nachfolgenden Code ausführen
            for (File file : files) {
                //Prüfen ob das File existiert falls nicht abbrechen     
                File filePath = file.getAbsoluteFile();
                if (filePath == null) {
                return;
                }
                /*
                *
                * Angeben was mit dem File geschehen soll
                *
                */
            }
        }
    });
    chooser.showOpenDialog(null)
}

Die unterschiedlichen Dialoge

Syntax

jFileChooser.setDialogType(/*Art des Dialogs*/);

Die Dialogarten

//Öffnen Dialog anzeigen
JFileChooser.OPEN_DIALOG
//Speichern Dialog anzeigen
JFileChooser.SAVE_DIALOG
//Dialog selbst definieren
JFileChooser.CUSTOM_DIALOG

Der Custom Dialog

TODO: Custom Dialog

File überschreiben abfrage

public void action(e) {
//Erzeuge neuen JFileChooser
JFileChooser chooser = new JFileChooser();    
//Filtern der Auswahlmöglichkeiten
chooser.setFileFilter(new FileNameExtensionFilter("Image File .jpg",//Beschreibung des Files
                                                  "jpg"             //Extension
                                                  )); 
//Titel des Dialogs festlegen  
chooser.setDialogTitle("Öffne Image File");
//Typ des Dialogs festlegen
chooser.setDialogType(JFileChooser.OPEN_DIALOG);
//ActionListener dem Filechooser hinzufügen
chooser.addActionListener(new ActionListener() {
    @Override
    //Action Inhalt definieren
    public void actionPerformed(ActionEvent e) {
        //Angeben was mit dem Dialog nach dem Klicken auf öffnen geschehen soll
        if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)) {
            //Leeres File erzeugen
            File file = null;
            //Leeres FileObject erzeugen
            FileObject fo = null
            //Leerer Output
            OutputStream os = null;
            //Schreibversuch durchführen
            try {
                //file von jFileChooser abrufen
                file = jFileChooser.getSelectedFile();
                //Wenn file bereits existiert
                if (file.existst()) {
                    //Abfrage soll File überschriben werden?
                    NotifyDescriptor d = new NotifyDescriptor.Confirmation(
                        "Datei überschreiben?",
                        NotifyDescriptor.YES_NO_CANCEL_OPTION
                    );
                    //Abfrage anzeigen und Ergebnis der Auswahl in Variable speichern
                    final Object dialogResult = DialogDisplayer.getDefault().notify(d);
                    //Bei klick auf NEIN
                    if (dialogResult == NotifyDescriptor.NO_OPTION) {
                        //Rekursivaufruf der action
                        action(e);
                        //action verlassen
                        return;
                    }
                    //Bei klick auf abbrechen
                    if (dialogResult == NotifyDescriptor.CANCEL_OPTION) {
                        //action verlassen
                        return;
                    }
                    //Bei klick auf Ja
                    if (dialogResult == NotifyDescriptor.YES_OPTION)  
                        //Nichts unternehmen und Schleife laufen lassen
                    }
                }
                //FileObject mit File erstellen
                fo = FileUtil.createData(file);
                //OutputStream öffnen
                os = fo.getOutputStream();
               /*
                * Hier wird definiert was gespeichert werden soll
                *
                */
                //OutputStream schließen
                os.close;    
                //Prüfen ob das File existiert falls nicht abbrechen     
                File filePath = file.getAbsoluteFile();
                if (filePath == null) {
                    return;
                }
            //Exceptions abfangen
            } catch (IOException ex) {
                Exceptions.printStackTrace(ex);
            //Mit finally sicherstellen dass OutputStream wieder geschlossen wird
            } finally {
                if (os != null) {
                    try {
                        os.close();
                    } catch (IOException ex) {
                        Exceptions.printStackTrace(ex);
                    }
                }            
            }
        }
    }
}

FileFilter um anzeige zu Filtern

                                                   
chooser.setFileFilter(new FileNameExtensionFilter("Image File .jpg", //Beschreibung
                                                  "jpg" //Extension
                                                  ));
                                                  
//Für mehrere FileExtensions einfach durch Komma trennen   //Beschreibung
chooser.setFileFilter(new FileNameExtensionFilter("Image File .jpg,
                                                  "jpg", //Extension 
                                                  "png", //Extension
                                                  "gif"  //Extension
                                                  ));

Verzeichnis wählen JFileChooser

    private File projectDirectory = new File();
    public void changeDirectory() {
            JFileChooser fc = new JFileChooser();
            fc.setFileFilter( new FileFilter()
            {
              @Override public boolean accept( File f )
              {
                return f.isDirectory();
              }
              @Override public String getDescription()
              {
                return "Verzeichnisse";
              }
            } );
            int state = fc.showOpenDialog( null );
            if ( state == JFileChooser.APPROVE_OPTION )
            {
              projectDirectory = fc.getSelectedFile();
              jTextField1.setText(projectDirectory.getName());
            }
        }
Einfacher:
JFileChooser chooser = new JFileChooser();
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int state = chooser.showOpenDialog(null);
        if (state == JFileChooser.APPROVE_OPTION){
            projectDirectory = chooser.getSelectedFile();
        }

JFileChooser in bestimmtem Verzeichnis öffnen

    private String pathReminder = "/";
     
    public void actionPerformed(ActionEvent e) {
    //an dieser stelle wird der Pfad gesetzt der geöffnet werden soll
    final JFileChooser fc= new JFileChooser(pathReminder); 
    File fileDir = fc.getCurrentDirectory();
    pathReminder = fileDir.getAbsolutePath();

java/netbeans/jfilechooser.txt · Zuletzt geändert: 2016/04/21 09:15 (Externe Bearbeitung)