Swing JFileChooser: Problem Approve oder Cancel abzufangen

Semox

Bekanntes Mitglied
Hallo Forum

Ich baue eine Anwendung und habe ein "kleines Problem" beim Abfangen von Cancel oder Approve Events mittels einer anonymen ActionListener Klasse.

Die Ereignisse werden leider nicht abgefangen bzw. führen nicht zu einem Ziel. Das Ziel war es ersteinmal die geklickte Aktion auf der Kommandozeile auszugeben. Warum passiert das nicht?

Java:
import java.awt.event.ActionEvent;
import java.io.File;

import javax.swing.AbstractAction;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;

/**
 * Chooser ist eine Unterklasse von MyGraphEditor, mit dem im Haupt-Programm die
 * Dateidialoge Speichern/Oeffnen aufgerufen werden koennen
 * 
 * @author carino
 * @version 1.6.0_20-b02
 * @serial 0.2
 * 
 */

public class Chooser extends JPanel {

	private static final long serialVersionUID = -3131792823207644165L;

	JFileChooser fO; // Oeffnen
	JFileChooser fS; // Schliessen

	/*
	 * Datei Oeffnen Dialog
	 */

	protected void fileOpener() {
		fO = new JFileChooser();
		fO.addChoosableFileFilter(new SuffixFilter());
		fO.setMultiSelectionEnabled(false);

		fO.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
		fO.showOpenDialog(Chooser.this);
		fO.addActionListener(new AbstractAction() {
			
			private static final long serialVersionUID = 5083023307644533632L;
			
			public void actionPerformed(ActionEvent evt) {
				
				fO = (JFileChooser) evt.getSource();
				if (JFileChooser.APPROVE_SELECTION.equals(evt
						.getActionCommand())) {
					
					fO.setVisible(false);
					System.out.println("Open: OK wurde geklickt");
				} else if (JFileChooser.CANCEL_SELECTION.equals(evt
						.getActionCommand())) {
					
					fO.setVisible(false);
					System.out.println("Open: Abbruch wurde geklickt");
				}
			}

		});
	}
	
	/*
	 * Datei Speichern Dialog
	 */

	protected void fileSaver() {
		fS = new JFileChooser();
		fS.addChoosableFileFilter(new SuffixFilter());
		fS.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
		fS.showSaveDialog(Chooser.this);
		fS.addActionListener(new AbstractAction() {
		
			private static final long serialVersionUID = 5083023307644533631L;

			public void actionPerformed(ActionEvent evt) {
				fS = (JFileChooser) evt.getSource();
				if (JFileChooser.APPROVE_SELECTION.equals(evt
						.getActionCommand())) {
					
					fS.setVisible(false);
					System.out.println("Save: OK wurde geklickt");
				} else if (JFileChooser.CANCEL_SELECTION.equals(evt
						.getActionCommand())) {
					
					fS.setVisible(false);
					System.out.println("Save: Abbruch wurde geklickt");
				}
			}

		});

	}

	/*
	 * Innere Klasse SuffixFilter hilft dabei im FileChooser ein bestimmtes
	 * Format zu filtern
	 */

	class SuffixFilter extends FileFilter {
		public String getDescription() {
			return "MyGraphEditor-Datei (*.mge)";
		}

		public boolean accept(File file) {
			if (file.isDirectory())
				return true;
			else if (file.getName().endsWith("*.mge"))
				return true;
			else
				return false;
		}
	}

}

Kann mir jemand zeigen, warum das nicht funktioniert?

Danke und Grüße,
Semo
 

Niki

Top Contributor
Weil man das so nicht macht. Vielleicht hilft dir das ja weiter.

Java:
private static File lastSelectedDir = null;

public static File getFileOrDirectryFromChooser(Component parent, int type) {
		JFileChooser chooser = null;
		if (lastSelectedDir != null)
			chooser = new JFileChooser(lastSelectedDir);
		else
			chooser = new JFileChooser();		
		chooser.setFileSelectionMode(type);
		int ret = chooser.showSaveDialog(parent);
		if(ret == JFileChooser.APPROVE_OPTION){
			File selected = chooser.getSelectedFile();
			if(selected.isDirectory())
				lastSelectedDir = selected;
			else
				lastSelectedDir = selected.getParentFile();
			return selected;
		}
		return null;
	}
 
T

Tomate_Salat

Gast
Versuchs mal so:
Java:
JFileChooser chooser    = new JFileChooser();
int rslt    = chooser.showOpenDialog(null);
if(rslt == JFileChooser.APPROVE_OPTION)
       System.out.println("You've choosen: " + chooser.getSelectedFile().getName());

mist niki war schneller :autsch:
 

Semox

Bekanntes Mitglied
Hallo ihr Beiden

Ihr seid ja wirklich von der schnellen Truppe. :)

Ich verstehe den Eintrag nicht:

Java:
int ret = chooser.showSaveDialog(parent);

In der API steht nicht etwas von einem int Wert, der da zugewiesen werden muß. Habe das Konzept nicht ganz verstanden. :rtfm:

Kann mir das jemand erklären?

Grüße,
Semo
 

Niki

Top Contributor
showSaveDialog ist modal, das heißt der aufrufende Thread wartet so lange an dieser Stelle, bis der Dialog geschlossen wird. Anschließend wird zurück geliefert, mit welcher Option der Dialog geschlossen wurde, eben OK oder Cancel. Du brauchst dann also nur noch den return-Wert abfragen
 

Semox

Bekanntes Mitglied
Ok...

Ist denn ein ActionListener schon automatisch in einem solchen Dialog integriert? Brauche ich also jetzt nur innerhalb der Bedingung ein "tu was" programmieren? Z.B. die gewählte Datei in ein Frame laden?

Java:
JFileChooser chooser    = new JFileChooser();
int rslt    = chooser.showOpenDialog(null);
if(rslt == JFileChooser.APPROVE_OPTION) {
       System.out.println("You've choosen: " + chooser.getSelectedFile().getName());
//Lade ne Datei
}

Grüße,
Semo
 
T

Tomate_Salat

Gast
in meinem Beispiel hast du doch das absolute minimum ;-)

mit
Java:
showOpenDialog(parent); // parent ist i.d.R. der Frame oder in meinem Beispiel null
öffnest du den Dialog. Danach wählt der Benutzer etwas aus. Jetzt bricht der Benutzer ab oder bestätigt.
Je nachdem was der Benuzter tut, wird ein Integer-Wert zurückgeliefert. Diesen speichere ich in [c]rslt[/c].

Danach prüfe ich einfach die rslt gegen die "Konstanten" von JFileChooser.

Einen ActionListener brauchst du garnicht, da du alles notwendige über den Rückggabewert prüfen kannst.
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N JFileChooser bzw. FileDialog Problem AWT, Swing, JavaFX & SWT 10
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
G JFileChooser Problem AWT, Swing, JavaFX & SWT 4
T JFileChooser Problem AWT, Swing, JavaFX & SWT 3
G Problem mit JFileChooser AWT, Swing, JavaFX & SWT 6
H JFileChooser: das *.* Problem AWT, Swing, JavaFX & SWT 28
Tommy135 JFileChooser ist sehr langsam AWT, Swing, JavaFX & SWT 13
T JFileChooser ist Englisch und bleibt Englisch und bleibt Englisch... AWT, Swing, JavaFX & SWT 15
M Swing jFileChooser Header viewTypeDetails setFont AWT, Swing, JavaFX & SWT 0
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Meeresgott AWT JFileChooser bestimmte Ordner anzeigen AWT, Swing, JavaFX & SWT 16
S Swing JFileChooser best. Ordner wie Dateien behandeln AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser für nicht existierendes Unterverzeichnis AWT, Swing, JavaFX & SWT 3
javampir Swing Anzeige der FileFilter im JFileChooser AWT, Swing, JavaFX & SWT 0
L JFileChooser Datentyp Unterscheidung AWT, Swing, JavaFX & SWT 6
K JFileChooser NullPointerException AWT, Swing, JavaFX & SWT 7
H JFileChooser Dateinamen vorgeben (Save Dialog) AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing JFilechooser - Detailansicht AWT, Swing, JavaFX & SWT 0
M JFileChooser Look and Feel AWT, Swing, JavaFX & SWT 2
T JFileChooser Rahmenfarbe ändern AWT, Swing, JavaFX & SWT 1
K Pfad mit JFileChooser ausgeben lassen AWT, Swing, JavaFX & SWT 7
C JFileChooser hängt bei Ausführung mit Terminal AWT, Swing, JavaFX & SWT 2
T Swing JFileChooser und FileView AWT, Swing, JavaFX & SWT 4
M Einzelne Ordner im JFileChooser ausgrauen? AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser inline editing AWT, Swing, JavaFX & SWT 4
D JFileChooser anpassen AWT, Swing, JavaFX & SWT 5
AssELAss Verzeichnis JFileChooser aktualisieren AWT, Swing, JavaFX & SWT 0
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
A Datei weiterverwenden mit JFileChooser AWT, Swing, JavaFX & SWT 6
T Importer-Auswahl im JFileChooser AWT, Swing, JavaFX & SWT 3
A Swing JFileChooser - Größenänderung nach Aufruf von showOpenDialog() AWT, Swing, JavaFX & SWT 15
D Serverdirectory auf Client browsen mit JFileChooser AWT, Swing, JavaFX & SWT 7
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
C JFileChooser und Netzwerk Laufwerke AWT, Swing, JavaFX & SWT 4
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
P JFileChooser mit verschidene Endungen AWT, Swing, JavaFX & SWT 12
S Swing Ordner im JFileChooser auswählen AWT, Swing, JavaFX & SWT 2
C JFileChooser bringt parent durcheinander AWT, Swing, JavaFX & SWT 2
N JFileChooser mit Dateinamenvorgabe AWT, Swing, JavaFX & SWT 9
S JFileChooser GTK (Ubuntu) "hässlich" AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser mit modifiziertem Kontextmenü AWT, Swing, JavaFX & SWT 4
S JFileChooser öffnet den falschen Ordner AWT, Swing, JavaFX & SWT 4
A Swing JFilechooser zeigt verzeichnisse nicht an AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser - Anzeige in Echtzeit filtern AWT, Swing, JavaFX & SWT 10
M JFileChooser umbenennen verbieten AWT, Swing, JavaFX & SWT 4
Helgon JFileChooser öffnet sich 2x AWT, Swing, JavaFX & SWT 12
K JFileChooser mit Zusatzfunktionen AWT, Swing, JavaFX & SWT 8
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
V JFileChooser auf Mac und Netzwerkordner AWT, Swing, JavaFX & SWT 2
B JFileChooser breite der Spalten? AWT, Swing, JavaFX & SWT 5
M JFileChooser setCurrentDirectory() - Verzeichnis relativ zum Code/binary AWT, Swing, JavaFX & SWT 14
P Swing Dateinamen im JFileChooser vorschlagen AWT, Swing, JavaFX & SWT 11
M JFileChooser Abfangen des DateiTypen möglich?? AWT, Swing, JavaFX & SWT 5
T Swing JFileChooser --> Desktop und Laufwerke im "Suchen in" - Drop Down AWT, Swing, JavaFX & SWT 3
N JFileChooser - Keine Funtkion AWT, Swing, JavaFX & SWT 13
T JFileChooser - "Öffnen-Button" aktivieren/deaktivieren möglich??? AWT, Swing, JavaFX & SWT 2
jueki Aktuell eingestellten Filter aus einem JFileChooser abfragen. AWT, Swing, JavaFX & SWT 5
F Swing JFileChooser - Dateinamen nicht editierbar machen AWT, Swing, JavaFX & SWT 8
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
Ivan Dolvich [Linux] JFileChooser sieht komisch aus... AWT, Swing, JavaFX & SWT 12
M Zurück-Button in JFileChooser AWT, Swing, JavaFX & SWT 9
N JFileChooser AWT, Swing, JavaFX & SWT 4
S JFileChooser Dateiname Autovervollständigung AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
I Swing JFileChooser '\' im Pfad... AWT, Swing, JavaFX & SWT 2
K Swing JFileChooser zum Speichern - FileFilter AWT, Swing, JavaFX & SWT 2
M Swing Execption beim JFileChooser AWT, Swing, JavaFX & SWT 4
kodela Swing JFileChooser und die Datei-Extension AWT, Swing, JavaFX & SWT 3
jueki eigenen Button in JFileChooser einfügen AWT, Swing, JavaFX & SWT 7
alderwaran jFileChooser showSaveDialog, dateinamen werden mit pfadnamen überschrieben beim navigieren AWT, Swing, JavaFX & SWT 1
B Swing Suche JFileChooser zum Speichern AWT, Swing, JavaFX & SWT 2
Iron Monkey JFileChooser DIRECTORIES_ONLY AWT, Swing, JavaFX & SWT 4
H JTree - nach Auswahl aus JFileChooser wird nur der erste Knoten angezeigt AWT, Swing, JavaFX & SWT 3
kodela Sicherheitsabfrage mit JFileChooser AWT, Swing, JavaFX & SWT 2
DARK_ZERATO2 jFileChooser AWT, Swing, JavaFX & SWT 4
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
P JFileChooser AWT, Swing, JavaFX & SWT 2
M Swing JFileChooser und JFrame AWT, Swing, JavaFX & SWT 5
G Swing JFileChooser in einem JPanel? AWT, Swing, JavaFX & SWT 3
J JFileChooser Dateiauswahl beim Tippen einschränken AWT, Swing, JavaFX & SWT 3
M Swing JFileChooser mit Windows 7 AWT, Swing, JavaFX & SWT 8
R JFileChooser - Initiales Verzeichnis auswählen AWT, Swing, JavaFX & SWT 8
brainray JFileChooser - es sollen nur Ordner wählbar sein AWT, Swing, JavaFX & SWT 2
N Mit JFileChooser ein Verzeichnis auswählen AWT, Swing, JavaFX & SWT 7
M Swing JFileChooser und versteckte Ordner AWT, Swing, JavaFX & SWT 2
F jFileChooser verwenden AWT, Swing, JavaFX & SWT 4
M Swing ImageIcon über JFileChooser einbinden AWT, Swing, JavaFX & SWT 4
F JFileChooser mal wieder AWT, Swing, JavaFX & SWT 2
ARadauer Swing JFileChooser mit Bildvorschau AWT, Swing, JavaFX & SWT 5
H Swing Dateiauswahldialog mit JFileChooser funktioniert unzuverlässig AWT, Swing, JavaFX & SWT 11
G Swing JFileChooser nur in Verzeichnis+Unterverzeichnisse AWT, Swing, JavaFX & SWT 5
K Swing JFileChooser AWT, Swing, JavaFX & SWT 6
M JFileChooser einschränken AWT, Swing, JavaFX & SWT 3
L JFileChooser braucht lang zum öffnen AWT, Swing, JavaFX & SWT 2
S NullPointerException bei JFileChooser AWT, Swing, JavaFX & SWT 8
M JFilechooser defaultdirectory AWT, Swing, JavaFX & SWT 5
C JFilechooser this.setAlwaysOnTop AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben