如何从自定义对象为gui属性赋值?

s4n0splo  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(670)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我正在尝试制作一个类似于bitlife的游戏,在我的程序中,第一个场景是主菜单,它要求用户输入firstname(textbox)、lastname(textbox)并选择性别(choicebox)。用户单击“新建游戏”(按钮)后,场景切换到实际的游戏场景。在这个场景中,我想显示sim的名称(用户创建的角色),以及随机分配的快乐、健康、聪明和容貌栏(我把它们做成了进度栏)。如何在游戏场景中显示这些赋值?我正在使用fxml文件为游戏创建用户界面。另外,我想指出的是,所有阶段都有自己的控制器。所以主菜单和游戏场景有不同的控制器。
在前一个(第一个)场景的控制器类(即游戏菜单场景)中,当用户单击“新建游戏”按钮后,处理程序将按以下方式创建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

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

lymnna71

lymnna711#

我在控制器类中解决了这个问题:

@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);
    }

u5i3ibmn

u5i3ibmn2#

可能是这样的:

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);

相关问题