Hallo,
ich suche nun schon eine halbe Stunde bei Google und hier, aber ich finde einfach nix was mir weiter hilft.
Ich möchte folgendes:
- Ein JFileChooser mit dem ich eine Datei speichern kann.
- Die Dateiendung kann zuvor über Buttons ausgewählt werden und steht danach in einem globalen String mit dem Namen dateityp. (Soll auch im JFileChooser unten anstatt "Alle Dateien" drinnstehen)
- Die zu speichernden Daten stehen in einem String mit dem Namen text.
- Der FileChooser soll immer wieder erscheinen, wenn man ihn schließen will ohne den Speichern-Button zu drücken.
Das habe ich bisher: (Wird über einen Button ausgeführt)
Code:
String text = "Test";
File datei;
JFileChooser fc = new JFileChooser(".");
fc.setDialogTitle("Exportieren - " + dateityp);
while(true) { // Wiederholen bis Speichern gedrückt wird
int auswahl = fc.showSaveDialog(this);
if (auswahl == fc.APPROVE_OPTION) {
// Speichern wurde gedrückt
break;
}
else continue; // Wiederholen
}
datei = fc.getSelectedFile();
if(datei.exists()) {
// Frage, ob überschrieben werden soll
}
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(datei+dateiname+dateityp));
bw.write(text);
bw.close();
}
catch(Exception exSpeichern) {
JOptionPane.showMessageDialog(this, "Fehler: "+exSpeichern.getMessage());
}
Was hast Du denn eigentlich für ein Problem? Du schreibst nur, dass Du ein Verhalten erreichen willst, postest ein Code-Sniplet und welche Problem jetzt auftritt, davon schreibst Du nichts.
Was hast Du denn eigentlich für ein Problem? Du schreibst nur, dass Du ein Verhalten erreichen willst, postest ein Code-Sniplet und welche Problem jetzt auftritt, davon schreibst Du nichts.
Also es ist so: Speichern tut er so schon und auch in das richtige Verzeichnis.
Was fehlt ist noch das:
1. Ich will anstatt "Alle Dateien" den Dateityp, der in der Variable steht in dem Feld haben.
2. Es soll eine Meldung erscheinen, die fragt ob er die Datei überschreiben soll, wenn es sie schon gibt.
Diese beiden Sachen bekomme ich irgendwie nicht hin.
Beim ersten braucht man einen FileFilter oder sowas, glaube ich mal. Aber wie geht das?
Aber was bekomme ich als Rückgabewert, wenn man OK drückt?
Bei Abbrechen bekomme ich ja null, oder?
In was für eine Variable muss ich den Rückgabewert legen?
Stimmt die if-Bedingung (von meinem geposteten Quelltext) dazu?
Das hatte ich auch schon gefunden, geht bei mir aber nicht.
Wenn ich diesen Code einbaue:
Code:
fc.setFileFilter( new FileFilter() {
public boolean accept( File f ) {
return f.isDirectory() || f.getName().toLowerCase().endsWith(dateityp);
}
public String getDescription() {
return "nur gewähltes Format";
}
} );
Kommt bei mir folgende Fehlermeldung:
Verweis auf FileFilter ist mehrdeutig; sowohl Klasse javax.swing.filechooser.FileFilter in javax.swing.filechooser als auch Klasse java.io.FileFilter in java.io stimmen überein
Ich habe hier einen Bildbetrachter, der einen JFileChooser zum Öffnen bzw. Auswählen von bestimmten Dateitypen implementiert. Du solltest dort auch fündig werden. Vielleicht hilft's dir ja. http://www.java-forum.org/de/viewtopic.php?p=139877#139877
Du kannst dennoch darauf zugreifen, auch ohne final.
Dazu schreibst du Klasse.this.VariableOderMethode
Klasse bezeichnet die Klasse, welche die innere Klasse umgibt. this zeigt auf eine Instanz dieser Klasse.
Und VariableOderMethode beschreibt eine Instanzvariable oder Instanzmethode der umgebenden Klasse.