Merken Sie sich die Fensterpositionen im Schwung

7

Ich habe eine ziemlich große Swing-Anwendung und ich möchte, dass sie die Größe aller Fenster, Jframes usw. speichert. Wenn der Benutzer das Fenster so ändert, wie er es möchte, sieht das nächste Mal genau so aus.

Habe ich eine bessere Option, um es zu lösen, aber schreiben Sie die Position / Größe jedes Fensters manuell in Voreinstellungen ? Gibt es eine praktische Möglichkeit, die Reihenfolge der Spalten in JTable zu speichern? Kann ein Rahmen sein? Ich möchte nur nicht den Text schreiben.

Serialisierung der ganzen großen App ist leider keine Option.

    
AvrDragon 24.09.2012, 13:25
quelle

5 Antworten

7
  

Nein, ist es nicht. Vergessen Sie nicht, die Grenzen (Position / Größe) des Haupt-JFrames zu schreiben.

Und nachdem Sie die Fensterposition wiederhergestellt haben, vergessen Sie nicht zu überprüfen, ob die Position wirklich im angezeigten Desktop-Bereich ist. Die Bildschirmkonfiguration kann sich zwischen den Anwendungsläufen ändern (z. B. wenn der Benutzer den Laptop von einem Desktop-Monitor trennt).

    
Adam Dyga 24.09.2012, 15:10
quelle
5
  

Gibt es eine bessere Option als die Position / Größe jedes Fensters in Preferences ?

zu schreiben

Nein, ist es nicht. Vergessen Sie nicht, die Grenzen (Position / Größe) des Haupt JFrame zu schreiben. Sie könnten die Parameter in eine XML-Datei anstelle einer Voreinstellungsdatei schreiben, aber das ist ein Implementierungsdetail.

  

Gibt es eine bequeme Möglichkeit, die Reihenfolge der Spalten in JTable zu speichern?

Schreiben Sie die Spaltennamen und Positionen in Ihre Einstellungsdatei.

Während diese Aufgabe häufig ist, hängt die Implementierung dieser Aufgabe davon ab, was Sie von Ihrer GUI speichern möchten.

Die Art und Weise, wie ich diese GUI-Parameter speichern würde, würde darin bestehen, eine Modellklasse zu erstellen, die alle Grenzen und andere Parameter enthält, die Sie speichern möchten. Ich würde eine XML-Datei lesen, die diese Parameter enthält, und die Felder in der Modellklasse auffüllen. Wenn es keine Datei gibt, würde ich Standardeinstellungen festlegen.

Die GUI würde die Felder in der Modellklasse verwenden, um die GUI zu erstellen. Wenn der Benutzer die GUI ändert, würde ich die Modellklasse mit den neuen Werten aktualisieren.

Wenn der Benutzer die GUI schließt, schreibe ich die Modellklasse in eine XML-Datei.

Ich bevorzuge die Verwendung von XML-Dateien über Properties-Dateien, da es einfacher ist, die Struktur des Modells zu sehen, und ich finde XML-Dateien einfacher zu ändern, wenn sich die GUI ändert.

    
Gilbert Le Blanc 24.09.2012 14:58
quelle
3

Was immer Sie beim nächsten Aufruf (Fensterposition usw.) merken möchten, schreiben Sie in eine Datei und lesen Sie diese Datei beim Start. Es muss auf Festplatte gespeichert werden, niemand weiß, was Sie wirklich speichern möchten (wahrscheinlich nicht die zeitkritischen Daten), und jede "automatische" Lösung kann nicht funktionieren, wenn nicht auch die zeitkritischen Daten gespeichert werden.

Möchten Sie, dass Ihre Anwendung mit einem Datensatz wiederhergestellt wird, der gelöscht wurde? Wahrscheinlich nicht.

    
Edwin Buck 24.09.2012 15:08
quelle
2

Ich habe immer java.util.Preferences dafür verwendet, aber ein javax.jnlp.PersistenceService funktioniert sogar für Anwendungen, die in der eingeschränkten Ausführungsumgebung ausgeführt werden."

    
trashgod 24.09.2012 18:40
quelle
2

Hier ist ein Anfang. Der folgende Code findet den obersten Container und speichert die Grenzen aller untergeordneten Komponenten in einer Voreinstellungsdatei, die dann für die Wiederherstellung verwendet werden kann. Dies wird wahrscheinlich nicht alle Situationen behandeln, aber es funktioniert für meine App. Zukünftige Änderungen können hier verfolgt werden .

%Vor%     
DeegC 24.08.2014 18:59
quelle