JavaFX Zustand der CheckMenuItems behalten nach Programmneustart

friednoodles

Aktives Mitglied
Hi,

mein Programm hat zwei CheckMenuItems die ich wenn ich das Programm neustarte immer noch markiert haben möchte. Wie stelle ich das am besten an?

Ich habe es bereits mit Prefferences probiert, leider bisher erfolglos.

Java:
    public void saveUserSettings() {
       
        Preferences pref;
        pref = Preferences.userNodeForPackage(Converter.class); 
        String preference = pref.get("automKonv","true");
       
    }

Für einen Anstoß in die richtige Richtung wäre ich sehr dankbar :)
 

Robat

Top Contributor
Hier mal ein kleines Beispiel:
Java:
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        
        Preferences pref = Preferences.userNodeForPackage(Main.class);
        boolean val = pref.getBoolean("someValue", false);

        HBox root = new HBox();

        CheckBox box = new CheckBox("Wert");
        box.setSelected(val);

        root.getChildren().add(box);

        primaryStage.setOnCloseRequest(event -> {
            pref.putBoolean("someValue", box.isSelected());
        });

        primaryStage.setScene(new Scene(root, 500, 500));
        primaryStage.show();
    }
}
 

friednoodles

Aktives Mitglied
Hier mal ein kleines Beispiel:
Java:
public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
      
        Preferences pref = Preferences.userNodeForPackage(Main.class);
        boolean val = pref.getBoolean("someValue", false);

        HBox root = new HBox();

        CheckBox box = new CheckBox("Wert");
        box.setSelected(val);

        root.getChildren().add(box);

        primaryStage.setOnCloseRequest(event -> {
            pref.putBoolean("someValue", box.isSelected());
        });

        primaryStage.setScene(new Scene(root, 500, 500));
        primaryStage.show();
    }
}

Super, danke!
Ich verstehe leider nicht ganz welche Rolle der String "someValue" übernehmen soll. Kannst du das kurz erklären?

edit: Nevermind, Ich habe mir die Javadoc durchgelesen und es verstanden! Danke nochmal!
 
Zuletzt bearbeitet:

friednoodles

Aktives Mitglied
Wenn ich folgenden abgeänderten Code laufen lasse
Java:
    private void saveAutoCopySetting() {

        Preferences pref = Preferences.userNodeForPackage(Converter.class);
        boolean stateOfautoCopy = pref.getBoolean("true", false);
        autoCopyCheckMenuItem.setSelected(stateOfautoCopy);

        stage.setOnCloseRequest(event -> {
            pref.putBoolean("true", autoCopyCheckMenuItem.isSelected());
        });

    }
funktioniert die Methode super, nur bekomme ich aus der Konsole
Java:
Dez 06, 2018 4:58:19 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

Ich verstehe hier wieder mal nur Bahnhof.. Sollte ich mich darum kümmern diese Warnung zu beseitigen wenn es denn funktioniert?
 

Ähnliche Java Themen

Neue Themen


Oben