Java JFileChooser Verzeichnis speichern

cl0udt

Lt. Junior Grade
Registriert
Sep. 2008
Beiträge
508
Hallo zusammen,

ich hab ein Programm mit grafischer Oberfläche, das eine Datei laden soll.
Im Ladefenster will ich dann, dass der aktuelle Pfad, in dem man die geladene Datei gefunden hat, gemerkt wird. Also ich gehe z.b. auf laden, das Ladefenster öffnet sich und ich befinde mich unter "C:\". Ich lade dann die Datei unter "C:\Windows\bla.txt" und beim nächsten mal laden, startet das Ladefenster gleich bei "C:\Windows".
Hier ein Ausschnitt des Codes:

Code:
private String pathReminder = "/";

public void actionPerformed(ActionEvent e) {
     final JFileChooser fc= new JFileChooser(pathReminder);
     File fileDir = fc.getCurrentDirectory();
     pathReminder = fileDir.getAbsolutePath();

Aber irgendwie wird das Verzeichnis nicht bei jedem Klick im Ladefenster aktualisiert...anscheinend geht das nicht so einfach...
 
Teste mal fc.setSelectedFile(File file) oder fc.setCurrentDirectory(File file)


MfG SaxnPaule
 
Zuletzt bearbeitet:
Also so? Klappt net. Irgendwie hab ich das gefühl, das der gar nicht bei jedem klick auf ein neues verzeichnis fileDir aktualisiert...

Code:
private String pathReminder = "/";

public void actionPerformed(ActionEvent e) {
     final JFileChooser fc= new JFileChooser(pathReminder);
     File fileDir = fc.getCurrentDirectory();
     fc.setCurrentDirectory(fileDir);
...
}
 
Mir ist auch nicht ganz klar, was du erreichen willst. Soll bei jedem Klick der FC in dem Verzeichnis gestartet werden, in dem er das letzte Mal geschlossen wurde?

Oder soll beim naechsten Start der Anwendung das zuletzt verwendete Verzeichnis gestartet werden?

Fuer Fall 1 reicht es immer mit der gleichen Instanz des FC zu arbeiten. Momentan erzeugst du bei jedem Klick eine neue Instanz.

Fuer Fall 2 musst du den zuletzt gewaehlten Pfad persistieren. In eine Property oder anderweitig.


MfG SaxnPaule
 
Ja, ich hab gerade auch gemerkt, dass ich bei jedem klick einen neuen Filechooser erzeuge. Arbeite grad in dem code von jemand anderem und da is es mir gar net aufgefallen. Is ja total blöd gewesen, den filechooser hab ich da rausgenommen und hochgesetzt als attribut.

Jetzt klappts auch...also manchmal hat man echt tomaten auf den augen :)

Fall 2 den du nennst ist auch interessant. Was heißt denn in eine property speichern genau?
 
Na entweder du liest bei jedem Start der Anwendung eine Datei ein in der der Startpfad steht und/oder du schreibst ihn beim Beenden weg.

Natuerlich kannst du auch an beliebigen anderen Orten (Datenbank, Cookie ...) speichern.
 
Ich würds gern beim Beenden dann wegschreiben.
Hmm ja nur wo schreibt man ihn den hin? Am besten so, dass es net auffält.
Geht cookies net nur im Browser? Hab da wenig plan von.

Also ne .property-Datei für eine Zeile wollt ich net extra machen.
 
Naja, du wirst nicht drum rumkommen irgendwo im Filesystem eine Datei abzulegen.
Am einfachsten direkt im Klassenpfad. Dann brauchst du dir keine Gedanken um Berechtigungen etc. machen.

Einfach File erzeugen, pruefen ob bereits vorhanden, falls ja, nach der richtigen Zeile suchen, falls nicht, Zeile per FileWriter wegschreiben.

Beim Starten FileReader direkt ohne Pfadangabe Dateiname uebergeben.


MfG SaxnPaule
 
Am besten ist es, wenn man die Property im User-Dir des Benutzers, der das Programm ausführt, speichert. Dort darf man auf jeden Fall speichern und jeder User hat dann seine eigene Einstellung.

An das Homedir kommt man so ran:
Code:
String userDir = System.getProperties().getProperty("user.home")
 

Ähnliche Themen

S
Antworten
5
Aufrufe
1.482
S
Zurück
Oben