Swing JFileChooser zum Speichern - FileFilter

kceenav

Mitglied
Guten Tag.

Ich möchte den Benutzer einen JFileChooser verwenden lassen, um eine (später zu erzeugende) Datei abzuspeichern. Er bestimmt bei der Gelegenheit das Speicher-Verzeichnis sowie den Namen.
Da es sich auf jeden Fall um eine .xls- oder .csv-Datei handeln wird, gebe ich dem FileChooser bislang 2 entsprechende FileFilter mit und mache einen Namensvorschlag (setSelectedFile()).

Das Problem: Die FileFilter müssen auch Verzeichnisse "akzeptieren", sonst kann man vom gerade angezeigten Verzeichnis aus niemals in Unterordner navigieren, da diese dann gar nicht sichtbar sind. (In der Hinsicht dasselbe Ergebnis liefert setFileSelectionMode(JFileChooser.FILES_ONLY).)

Nun will ich aber ja vermeiden, dass der Benutzer ein Verzeichnis selektiert und mit dieser (nach jetziger Programmlogik) "gültigen" Auswahl den Dialog schließt.
Natürlich kann man anschließend prüfen, ob die Auswahl tatsächlich den Anforderungen entspricht und ggf. den Dialog erneut öffnen, aber das kann doch wohl nicht die einzige Möglichkeit sein, ein für so einen Fall sinnvolles Verhalten herbeizuführen?

Wie ich nach weiteren Versuchen feststelle, ist ein zusätzliches Problem, dass bei jedem Klick auf ein Verzeichnis dessen Name ins Feld der zu speichernden Datei übernommen wird.
(Dazu hab' ich allerdings vorhin schon einen Thread hier im Forum gefunden - vielleicht steht da ja auch eine für mich brauchbare Lösung drin ...)
 
Nun will ich aber ja vermeiden, dass der Benutzer ein Verzeichnis selektiert und mit dieser (nach jetziger Programmlogik) "gültigen" Auswahl den Dialog schließt.
Dazu muss der FileSelectionMode auf FILES_ONLY gesetzt sein.

Der FileFiler könnte dann so aussehen:
Java:
fileChooser.setFileFilter(new FileFilter() {
	public boolean accept(File file) {
		if (file.isDirectory())
			return true;
		if (file.getName().endsWith(".csv"))
			return true;
		return false;
	}
	
	public String getDescription() {
		return "Nur csv - Dateien";
	}
});
 
Hallo,

Danke erst mal. Ich hatte geglaubt, diese Variante bereits probiert zu haben, mit dem Ergebnis, dass man AUCH diesen elementaren Parameter des JFileChooser auf "FILES_AND_DIRECTORIES" setzen müsste, um Verzeichnisse sehen und (nach unten) navigieren zu können.

War wohl ein Irrtum. Tatsächlich ist das oben Gezeigte die Lösung, so geht's doch!

Jetzt mal sehen, ob nicht vielleicht noch andere Probleme auftauchen ...
 

Neue Themen


Zurück
Oben