如何从自定义对象为我的 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);
}
我正在尝试制作一款类似于 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);
}