GUI-Einstellungen mittels Preferences

JMarkus

Mitglied
Ich habe folgendes Problem. Es gibt eine Startklasse von welcher aus ein Fenster erstellt wird. Für dieses Fenster gibt es Einstellungen (z. B. Größe, Position) die mittel Preferences gespeichert sind. Wie bringe ich nun alles zusammen, sodass ich die gespeicherten Einstellungen auf das zu erstellende Fenster anwenden kann? Oder ist der generelle Aufbau schon falsch?

Startklasse:
Java:
public class Main {
    public static void main(String[] args) {    
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainFrame().setVisible(true);
            }
        });
    }
}
Einstellungen:
Java:
public class Settings {
    public void getPrefs() {
        Preferences prefs = Preferences.userNodeForPackage(this.getClass());
        int width = prefs.getInt("WIDTH", 200);
        ....
    }
}
Fenster:
Java:
public class MainFrame extends javax.swing.JFrame {
    public MainFrame() {
        initComponents();
    }               
    private void initComponents() { ...
 

kaoZ

Top Contributor
Du könntest entweder das Prefs Object static deklarieren oder du übergibst dieses einfach als Paramater an dein mainframe

also entweder :

Java:
class MainFrame{
   .....
  void init(){
       width = Settings.PREFS.getInt("width", 200);

  }
}

oder du arbeitest halt mit einer als Parameter übergebenen Instanz.
 
Zuletzt bearbeitet:

JMarkus

Mitglied
Das sind meiner Ansicht nach auch die einzigen beiden (sinnvollen) Möglichkeiten. Habe mich für die erste Variante (Settings als statische Hilfsklasse) entschieden. Damit ist man flexibler, falls auch noch andere Nicht-GUI-Einstellungen gespeichert werden sollen und der Zugriff auch von anderen Stellen aus erfolgen muss.
 

kaoZ

Top Contributor
Andere Möglichkeit , du initialisierst alle deine GUI Komponenten mit jeweils einer eingenen Properties Datei. sprich du gibst jeder Komponente als Attribut ein Properties Objekt welches dann aus einer Datei initialisiert wird.

Zusätzlich hierzu könntest du ein Preferences Objekt verwenden um Anwendungsübergreifende eigenschaften und Einstellungen zu hinterlegen.

Einziger Nachteil ist eben das Properties ausschließlich mit Strings arbeitet, und keine vorgefertigten Methoden anbietet um z.B eine Typumwandlung in einen Integer druchzuführen , allerdings kannst du so schön die Strukturen trennen, da jedes GUI element sein eigenes Properties Objekt verwendet und dort alle Eigenschaften zu sich selbst hinterlegt werden .
 

kaoZ

Top Contributor
Das ginge doch auch mit einem Prefs-Objekt... einfach für jedes GUI-Element einen neuen Knoten anlegen.

selbstverständlich, ist halt Geschmackssache ob du alles in die Registry eintragen möchtest oder es in gesonderten Dateien verwalten können willst.
 

JMarkus

Mitglied
Naja, bei den Properties-Dateien hätte man halt wieder das Problem, wo diese plattformunabhängig gespeichert werden können. Um dieses Detail muss man sich bei Preferences eben nicht kümmern. Unter Linux/Mac speichert er die in xml-Dateien, unter Windows in der Registry.

Nebenbei bemerkt habe ich festgestellt, dass die statische Klasse "Settings" gar nicht nötig ist. Da die Preferences ja nur statische Methoden anbietet, brauch ich diese ja nicht nochmal in eine statische Klasse "Setting" packen. Demzufolge mach ich das jetzt direkt in den Klassen der GUI-Elemente. Das kommt dann der von dir im Kommentar #4 vorgeschlagenen Variante nahe.
Java:
public class MainFrame extends javax.swing.JFrame {
   
    private Preferences prefs;

    public MainFrame() {
       prefs = Preferences.userNodeForPackage(getClass());
       initComponents();
    }
    private void initComponents() {
       setSize(prefs.getInt("width", 100), prefs.getInt("height", 100));
       ...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Kameradaten bzw. Einstellungen herausfinden Allgemeine Java-Themen 9
M DYGraphen darstellen... fehlende Einstellungen Allgemeine Java-Themen 1
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
M Einstellungen in JAR speichern Allgemeine Java-Themen 8
I Einstellungen für ein Programm speichern Allgemeine Java-Themen 5
E Welches Dateiformat für gespeicherte Einstellungen? Allgemeine Java-Themen 20
F Schlüsselworte Einstellungen dynamisch deserialisieren Allgemeine Java-Themen 5
E FF Einstellungen über Programm ändern? Allgemeine Java-Themen 7
L RMI Die richtigen Policy-Einstellungen oder einfach Signieren? Allgemeine Java-Themen 3
M Speichern von Einstellungen Allgemeine Java-Themen 13
Mr.Isaaaac Tomcat Proxy Einstellungen, hä? Allgemeine Java-Themen 3
T Drucken mit PrintJob und Einstellungen merken Allgemeine Java-Themen 3
eskimo328 Verwaltung Kundenspezifische Einstellungen Allgemeine Java-Themen 16
K Java Einstellungen Allgemeine Java-Themen 2
E Nicht Business-Logik Daten also Einstellungen wo speichern? Allgemeine Java-Themen 2
M Gloable Einstellungen Allgemeine Java-Themen 7
M Passwörter in Einstellungen speichern Allgemeine Java-Themen 2
S Java Editor einstellungen Allgemeine Java-Themen 4
M JVM Einstellungen in JAR einbetten Allgemeine Java-Themen 2
W Einstellungen verwalten Allgemeine Java-Themen 31
DEvent In Mehrbenutzersystemen Einstellungen speichern Allgemeine Java-Themen 8
TheJavaKid Einstellungen speichern ohne eine Datei zu erstellen! Allgemeine Java-Themen 19
D Probleme mit dem Drucker Einstellungen ! Allgemeine Java-Themen 5
M java Einstellungen Allgemeine Java-Themen 5
M problem mit packages - falsche einstellungen? Allgemeine Java-Themen 2
K Einstellungen aus Windows und Linux ermitteln Allgemeine Java-Themen 2
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Lottowebsite programmieren mittels Java, HTML,.... Allgemeine Java-Themen 7
W PDFs signieren mittels IText / Lowagie Allgemeine Java-Themen 0
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
B Java Sternchen ausgeben mittels Rekursion Allgemeine Java-Themen 3
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1
E Videosequenz mittels Java aus Video schneiden Allgemeine Java-Themen 10
B Ordner öffnen mittels Java in Linux-Umgebung Allgemeine Java-Themen 7
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
RySa Variablenname mittels Reflexions rausbekommen (als String) ? Allgemeine Java-Themen 9
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
T Wie rufe ich mittels String-Inhalts eine Methode auf? Allgemeine Java-Themen 3
T Exif mittels Java auslesen Allgemeine Java-Themen 14
A Sudoku mittels Backtracking Problem Allgemeine Java-Themen 6
7 Webseiten mittels Java auslesen Allgemeine Java-Themen 7
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
dunhillone Mittels Annotations Methoden "erweitern"? Allgemeine Java-Themen 11
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
O Programm mittels Java installieren Allgemeine Java-Themen 15
S Array-Sort mittels Binärsuche Allgemeine Java-Themen 2
J Setter mittels invoice aufrufen Allgemeine Java-Themen 4
S Eingabeprüfung mittels Regexp Allgemeine Java-Themen 5
J Objekt in Datei speichern mittels Streams Allgemeine Java-Themen 6
D Einfaches Nutzen von Plugins mittels generischer Methode Allgemeine Java-Themen 3
E Aus mehreren PDFs eines machen, zusammenfügen mittels iText Allgemeine Java-Themen 1
G Graph mittels Punkte erstellen Allgemeine Java-Themen 27
M Problem bei PDF-Anzeige mittels Acrobat Viewer Bean Allgemeine Java-Themen 2
G HTML Code aus String mittels REGEX entfernen Allgemeine Java-Themen 2
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
G Screenshot mittels robot ausführen Allgemeine Java-Themen 4
B Html Formulare mittels Java automatisch senden Allgemeine Java-Themen 5
E import mittels Eclipse Allgemeine Java-Themen 3
F mittels Collection<A> an A.class kommen? Allgemeine Java-Themen 7
T IF Abfrage + YES_NO Option mittels JOptionPane Allgemeine Java-Themen 3
F Zugriff mittels getObject() oder this.object ? Allgemeine Java-Themen 8
J Tonbalance mittels JMF regeln Allgemeine Java-Themen 3
G Font mittels ClassLoader in .jar wirft NotFoundException Allgemeine Java-Themen 10
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
K Mittels Generics eine Methode verallgemeinern Allgemeine Java-Themen 2
A FTPS bzw. FTP over SSL mittels Java Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
P E-Mails mittels POP3 abrufen Allgemeine Java-Themen 2
S mail von server mittels mailapi löschen Allgemeine Java-Themen 2
M java.util.prefs.Preferences "not visible" Allgemeine Java-Themen 7
R WebDriver Firefox preferences ändern Allgemeine Java-Themen 0
ARadauer Wo liegen die Daten der Preferences Klasse Allgemeine Java-Themen 3
G Java Preferences API oder lieber doch nicht? Allgemeine Java-Themen 10
T osgi Preferences, letzter pathName Allgemeine Java-Themen 19
Dit_ Registry, Preferences | Name des Knotens ändern. Allgemeine Java-Themen 2
M In Preferences speichern Allgemeine Java-Themen 3
A Element für Preferences Page Allgemeine Java-Themen 3
T System Preferences + LInux (Ubuntu) Allgemeine Java-Themen 8
G eclipse rcp, preferences Allgemeine Java-Themen 2
C Preferences Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben