gpt4 book ai didi

java - 从另一个窗口javafx设置TextField的值

转载 作者:行者123 更新时间:2023-12-01 16:24:52 26 4
gpt4 key购买 nike

我想填写此字段,当我转到下一个屏幕时,您将看到我刚刚完成的内容。我怎样才能做到这一点?他们是新来的,我不知道该怎么办。谢谢!

enter image description here

@FXML private var tempId: TextField? = null
@FXML private var btnNext: Button? = null

@FXML
fun onNextClicked(event: ActionEvent?) {

val loader = FXMLLoader(this.javaClass.classLoader.getResource("layouts/configure.fxml"))
loader.resources = ResourceBundle.getBundle("lang", Locale(PreferencesHandler.getInstance().language))

val mainWindowRoot = loader.load<Any>()
(event?.source as Node).scene.root = mainWindowRoot as Parent
}

最佳答案

简单的答案是获取与“ layouts / configure.fxml”关联的控制器,并将文本字段值传递给它。

假设您的控制器是ConfigureController,则可以执行以下操作:

fun onNextClicked(event: ActionEvent?) {

val loader = FXMLLoader(this.javaClass.classLoader.getResource("layouts/configure.fxml"))
loader.resources = ResourceBundle.getBundle("lang", Locale(PreferencesHandler.getInstance().language))

val controller = loader.controller as ConfigureController
controller.tempIdText = tempId?.text

val mainWindowRoot = loader.load<Any>()
(event?.source as Node).scene.root = mainWindowRoot as Parent
}



我不确定这是否是使用kotlin访问控制器的正确语法。我将TornadoFX与kotlin一起使用,后者使用不同的机制来加载所谓的视图。我在这里发布的最新答案中提供了一个如何从Java访问控制器的示例: How should I externally call a method contained in the "Main" class in JavaFX?

对于这样的应用程序,长的答案是使用数据模型。数据模型是一个或多个类,它们独立于GUI保留数据。 fxml控制器都可以通过注入,单例等方式访问此模型,并且可以从不同的fxml控制器读取和修改数据。例如,在onNextClicked函数中,您可以将文本从tempId写入模型,然后在ConfigureController中读取模型。较长的答案是在数据模型中使用可观察的属性,并将这些属性绑定到GUI元素,以使数据模型和GUI保持同步。

关于java - 从另一个窗口javafx设置TextField的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62169598/

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