gpt4 book ai didi

Java - 场景生成器 - 切换场景后,文本字段和组合框中的用户输入消失

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:19 24 4
gpt4 key购买 nike

我的Java项目中有几个场景,并且有一个我真的不知道如何解决的问题。 First scene called "Zadanie".第一个场景“Zadanie”中有文本字段和组合框。因此,正如您在图像中看到的那样,我在文本字段中写了一些数字,并在组合框中选择了一些选项。然后我通过单击“Vypočítať”(向上按钮)切换到其他场景。然后我切换回第一个场景“Zadanie”,但 TextFields 和 ComboBoxes 中的所有内容都消失了。 Back on first scene "Zadanie".请给我一些代码示例或如何将它们保留在第一个场景中的示例。谢谢。

最佳答案

问题在于,当您切换屏幕时,代表屏幕的对象将被丢弃。因此,任何变量(例如用户输入)也将被处理。当您切换回屏幕时,它是一个不同的对象,但类型相同。这意味着诸如用户输入之类的变量值是新实例化/初始化的。

解决方案:创建一些全局变量(例如,Main 中的变量,但为了编程练习,您应该使用不同的类)来存储此信息。当用户单击切换屏幕时,但在屏幕实际切换(卸载)之前,将任何用户输入存储在全局变量中。然后,当屏幕切换回时,将这些变量从全局变量重新加载到字段中。

全局.java

class Global {
public static String nameFieldValue;
public static String ageFieldValue;
}

PersonForm.java

class PersonForm extends BorderPane {
Button closeButton;
TextField nameField;
TextField ageField;

public PersonForm() {
this.nameField = new TextField(...);
this.ageField = new TextField(...);
this.closeButton = new Button("Close Window");

// set layouts of buttons here.

if (Global.nameFieldValue != null) {
this.nameField.setText(Global.nameFieldValue);
}
if (Global.passwordFieldValue != null) {
this.passwordField.setText(Global.passwordFieldValue);
}

PersonForm thisForm = this; // So that EventHandler cna use this.
this.closeButton.setOnAction(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
Global.nameFieldValue = thisForm.nameField.getText();
Global.passwordFieldValue = thisForm.passwordField.getText();
// switch screens.
}
});
}
}

关于Java - 场景生成器 - 切换场景后,文本字段和组合框中的用户输入消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45311376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com