Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe in meinem Programm die Möglichkeit den Zustand des Programmes entweder als Image oder als Textdatei zu speichern. Die beiden Methoden funktionieren inzwischen auch. Wie ist es aber nun möglich, zwischen den Methoden zu unterscheiden. Also bei Auswahl des jeweiligen Datentyps .png oder .txt die entsprechende Methode aufzurufen. Kann dies in dem JFileChooser abgefragt werden, oder muss ich selber den Datentyp auslesen und dann die Methode ausführen?
Über den den Dateityp wird lediglich "allgemeine Datei" ausgegeben.
Das funktioniert so leider bei mir nicht, da ich bis jetzt an den Pfad einfach die Endung .png anhänge. Aber ich muss ja nun einen Schritt vorher auf das Suffix prüfen. Und dann entweder .png oder .txt anhängen. Gibt es keine Möglichkeit an den ausgewählten Datentyp zu kommen?
Bis jetzt sieht der Save Dialog so aus:
Java:
public void saveDialog(){
JFileChooser saveChooser = new JFileChooser();
saveChooser.addChoosableFileFilter(new FileNameExtensionFilter(".txt", "txt"));
saveChooser.addChoosableFileFilter(new FileNameExtensionFilter(".png", "png"));
int selection = saveChooser.showSaveDialog(null);
if(selection == JFileChooser.APPROVE_OPTION){
File file = saveChooser.getSelectedFile();
String result = file.getAbsolutePath() + ".png";
File fileToSave = new File(result);
grid.saveMap(fileToSave);
}
}
Den ausgewählten File Filter kann ich ja zurückgeben,
Hallo, ich habe inzwischen das Problem lösen können. Für die, die es interessiert. Ich habe nun eine eigene Hilfsmethode, die prüft, welcher Dateityp ausgewählt worden ist und hängt das entsprechende Suffix an. Jetzt kann ich wie gewünscht eine Überprüfung durchführen und mithilfe eines booleschen Flags die entsprechende Methode starten.
Mir war und ist noch nicht so richtig klar, wo dein eigentliches Problem liegt und inwiefern dir deinen oben gezeigte Lösung weiterhilft.
bezogen auf dein Codeschnipsel oben: wie stellst du sicher, dass die Erweiterung des Files tatsächlich "png" ist, wenn der Benutzer den Dateityp "PNG" z. B. mit einem FileFilter ausgewählt hat?
Ein JFileChooser stellt dies nämlich keinesfalls sicher. Es gibt auch keine out of the Box Möglichkeit, den Benutzer bei der Benutzung eines SAVE Dialogs den Benutzer vor dem Überschreiben einer existierenden Datei zu warnen.
ich stand vor einiger Zeit vor einem ähnlichen Problem: ich brauchte einen JFileChooser, der beim Speichern eine ggf. fehlende Endung anhängt und der vor dem Überschreiben einer existierenden Datei warnt. Dazu habe ich mir einen speziellen FileFilter geschrieben, und eine Klasse die JFileChooser erweitert. Hier die Klassen:
genau das, was du beschrieben hast, wollte ich erreichen. Habe einen guten Ansatz gefunden und wohl damit etwas Ähnliches erreicht wie du, obwohl dein Code für mich auf den ersten Blick sehr komplex ist aber natürlich deutlich netter umgesetzt ist. Werde ich mir morgen auf jedenfall ausgiebig ansehen. Hierfür erst einmal ein dickes Dankeschön. Den Ansatz den ich gefunden habe ist der, über den FileFilter jedes Suffix zu bekommen und diese dann in einem Array abzulegen. Der erste Eintrag entspricht dann dem ausgewählten Filter bzw. Suffix.
Wenn dies nicht nötig ist, wird einfach getSelectedFile() zurückgegeben
Das war auch mein Ansatz, jedoch wusste ich nicht, wie ich den FileFilter dazu verwenden kann. Daher gefiel mir der beschriebene Ansatz ganz gut.