Ein Öffnen-Dialog zum öffnen von Dateien und Verzeichnissen
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.