如何从自定义对象为我的 GUI 属性赋值?

How can I assign a value to my GUI attributes from a custom object?

我正在尝试制作一款类似于 bitlife 的游戏,在我的程序中,第一个场景是主菜单,它要求用户输入名字(文本框)、姓氏(文本框)并选择性别(选择框) .用户点击新游戏(按钮)后,场景切换到实际游戏场景。在这个场景中,我想显示 sim 的名称(用户创建的角色),以及随机分配的快乐、健康、智慧和容貌条(我将它们设为进度条)。如何在游戏场景中显示这些分配的值?我正在使用 FXML 文件为游戏创建用户界面。另外,我想指出所有阶段都有自己的控制器。所以主菜单和游戏场景有不同的控制器。
在前一个(第一个)场景的控制器 class,即游戏菜单场景中,在用户单击新游戏按钮后,处理程序会像这样创建 sim:

        Sim.firstname = firstname.getText();
        Sim.lastname = lastname.getText();
        Sim.gender = genders.getValue();
        Sim.happiness = random.nextFloat();
        Sim.health = random.nextFloat();
        Sim.smarts = random.nextFloat();
        Sim.looks = random.nextFloat(); //0.0-1.0

我还附上了游戏界面的图片。

会是这样的:

fullname.setText(sim.firstname+' '+sim.lastname);
happiness.setProgress(sim.happiness);
health.setProgress(sim.health);
smarts.setProgress(sim.smarts);
looks.setProgress(sim.looks);

另一种方法是为 sim 设置一个 GUI 对象,它使用属性来保存属性而不是原始变量和原始对象。这样您就可以将值绑定到 GUI,这样对 sim 对象的更改将自动反映在 UI.

firstname.textProperty().bind(Bindings.concat(sim.firstnameProperty, " ", sims.lastnameProperty));
happiness.progressProperty().bind(sim.happinessProperty);

我在Controller中是这样解决的class:

 @Override
    public void initialize(URL location, ResourceBundle resources) {
        fullname.setText(Sim.firstname + " " + Sim.lastname);
        bank_balance.setText(Integer.toString(Sim.bankbalance));
        happiness.setProgress(Sim.happiness);
        health.setProgress(Sim.health);
        smarts.setProgress(Sim.smarts);
        looks.setProgress(Sim.looks);
    }