# JFileChooser - Dateiendung vorgeben?



## muemmel_0811 (2. Jun 2006)

Hallo zusammen,

ich hab einen JFileChooser zum Speichern von .jpg - es funktioniert auch!

Das einzige, was ich noch nicht geschafft hab, ist ".jpg" in das Dateinamen-Feld per default zu schreiben, damit der User nur noch den Dateinamen vor das ".jpg" schreiben muss - wie in MS Word bspw. nur ohne konkreten Dateinamensvorschlag.
Bis jetzt wird abgefragt, ob der User ".jpg" selbst angefügt hat und wenn nicht, dann wird es drangehängt.

Hab das Forum und auch Google schon bemüht, aber irgendwie bin ich nicht fündig geworden oder ich hab's übersehen, dann  

Gibt es eine Möglichkeit ".jpg" in das Dateinamen-Feld vorzubelegen und wenn ja, wie?

Grüße,
muemmel


----------



## jagdfalke (2. Jun 2006)

ehhm, ich weiß zwar nicht wie das geht, aber ich würde als User sowas nicht haben wollen. Das erste was ich bei solchen Feldern machen würde:
1. Doppelklick um alles zu markieren
2. Entf

mfg
jagdfalke


----------



## norman (2. Jun 2006)

muemmel hat gesagt.:
			
		

> Bis jetzt wird abgefragt, ob der User ".jpg" selbst angefügt hat und wenn nicht, dann wird es drangehängt.


das ist doch bei word genauso? ???:L


----------



## The_S (2. Jun 2006)

Du musst dir einen FileFilter schreiben (Achtung, den im package javax.swing.filechooser verwenden) und diesen dann deinem JFileChooser adden. Gibt genug Beispielcode hier im Forum 

[edit] Wenn ich mir so die anderen Posts anschaue, glaube ich, was missverstanden zu haben


----------



## AlArenal (2. Jun 2006)

jagdfalke hat gesagt.:
			
		

> ehhm, ich weiß zwar nicht wie das geht, aber ich würde als User sowas nicht haben wollen. Das erste was ich bei solchen Feldern machen würde:
> 1. Doppelklick um alles zu markieren
> 2. Entf



Super, macht ja auch viel Sinn Dateien anzeigen zu lassen, die das Programm eh nicht handhaben kann. Das hilft dem User unegemein...

Was die Eingangsfrage angeht: http://www.dpunkt.de/java/Programmieren_mit_Java/Oberflaechenprogrammierung/35.html


----------



## jagdfalke (2. Jun 2006)

Hä? Er wollte doch in dem Feld in das man den Dateinamen reinschreibt ".jpg" stehen haben und nicht als FileFilter. Dachte ich zumindest.

mfg
jagdfalke


----------



## muemmel_0811 (2. Jun 2006)

hab ich mich wirklich so unverständlich ausgedrückt? ???:L

Also dann nochmal: Ich möchte das Feld "Dateiname" mit .jpg vorbelegen, sodass der User nur noch den Dateinamen davor eingeben braucht. 
Meiner Meinung nach, ist mit dieser Vorbelegung des Dateinamen-Feldes einfach schon klar ersichtlich, in welchem Format das File abgespeichert wird, auch wenn es im Filter (den hab ich schon) darunter auch noch mal steht.

Zum Filter nochmal: so wie ich den bis jetzt verstanden habe, dient er nur der Filterung der angzeigten Dateien, also wenn ich nur jpgs haben will, dann werden auch nur Files mit der Endung jpg im ausgewählten Ordner angezeigt. 

Ich habe beim Filter allerdings noch keine Methode erkennen können, mit der ich in das Dateinamen-Feld etwas schreiben kann, dass dann auch beim Öffnen des "Speichern Unter"-Dialogs angezeigt wird.

Bei den Beispielen von Sun, die im JDK enthalten sind, gibt es zwar etwas zu JFileChooser, aber dort ist leider auch keine Vorbelegung des Dateinamen-Feldes implementiert...

Und übrigens:


> Hä? Er wollte doch...


*... ist eine SIE*

Grüße,
muemmel[/b][/quote]


----------



## AlArenal (2. Jun 2006)

Hallo SIE! 

Der Speichern-Dialog funktioniert analog zum Öffnen-Dialog (haha, sind ja beides JFileCHooser), also auch mit Filter. Das VorEintragen eines Dateinamens erledigt sich mit JFileChooser#setSelectedFile(File file).


----------



## muemmel_0811 (2. Jun 2006)

Hallo AlArenal,

das mit dem setSelectedFile(File datei) hatte ich schon mal irgendwie probiert, aber bin kläglich gescheitert, da ich ja kein File vorgeben will, sondern nur einen String - oder ich versteh's einfach nicht 

Magst Du mir da vielleicht ein bisserl Code zur Verfügung stellen?

Grüße,
muemmel


----------



## AlArenal (2. Jun 2006)

Ein File-Objekt muss nicht zwangsläufig eine bereits physisch existente Datei eschreiben. Wenn du eine neue Datei erzeugen willst, erzeugst du ja auch erst eine Instanz von File und speicherst die dann ab. Ähnlich ist es hier.

setSelectedFile(new File( PFAD + DATEINAME ));


----------



## muemmel_0811 (2. Jun 2006)

OK, ich werd's heut abend noch mal probieren (bin grad noch in der Arbeit) und wenn ich's dann immer noch nicht hinbekomme, dann meld ich mich hier wieder!

Danke,
muemmel


----------



## Overflow (2. Jun 2006)

```
import java.io.File;

import javax.swing.filechooser.FileFilter;


public class Bildfilter extends FileFilter {

	/* (non-Javadoc)
	 * @see javax.swing.filechooser.FileFilter#accept(java.io.File)
	 */
	public boolean accept(File f) {
		
		return f.isDirectory() || 
		f.getName().toLowerCase().endsWith(".jpg") ||
	}

	/* (non-Javadoc)
	 * @see javax.swing.filechooser.FileFilter#getDescription()
	 */
	public String getDescription() {
		return "*.jpg;*.gif;*.png";
	}

}
```


----------



## Overflow (2. Jun 2006)

Muss unten natürlich dann 

```
public String getDescription() {
      return "*.jpg;
```
heißen, wenn du nur JPG's willst...


----------



## Leroy42 (2. Jun 2006)

Ich glaub', ihr redet hier aneinander vorbei  ???:L 
Mdme. Mümmel will keine Datei vorgeben und auch (nicht nur) eine 
vorgegebene Endung, sie will, daß der User als Dateiname nur "MyEx"
eingeben kann und der JFileChooser automatisch "MyEx.jpg" liefert
(wie das _vermutlich_ auch der WinDoof-FileChooser macht).

Ob das irgendwie geht, oder ob nicht die Anwendungsprogramme die
gewählte Dateiendung _immer zu Fuß anhängen _weiß ich allerdings
auch nicht.


----------

