gpt4 book ai didi

kotlin - Kotlin | Tornadofx:如何在另一个fxml屏幕上单击鼠标时打开新的fxml屏幕

转载 作者:行者123 更新时间:2023-12-02 13:42:51 26 4
gpt4 key购买 nike

我的任务很简单,但是做不到。

我有Kotlin | Tornadofx应用程序。

我打开fxml屏幕:

class MainView : View() {
override val root : VBox by fxml("/Screen 1.fxml")
}

Screen1.fxml中有一个按钮。我需要该应用程序打开在Screen1.fxml中按下的按钮上的另一个屏幕(Screen2.fxml)。

我被这个卡住了。通过onAction =“#FunctiondefinedinMainView”从Screen1.fxml仅提供函数调用。但是只能通过以下方式在MainView中交换 View
button("Go to Screen2") {
action {
replaceWith<Screen2>()
}

构造,我无法完成,因为我只能从Screen1.fxml中调用一个函数。而且MainView中没有按钮。

提前致谢。

最佳答案

首先,您应该在Screen 1.fxml文件的按钮中添加一个id:

<Button fx:id="myButtonId">

然后,您可以在 MainView中获得对该按钮的引用:
class MainView : View() {
override val root: VBox by fxml("/Screen 1.fxml")
val button: Button by fxid("myButtonId")
}

现在,您可以为按钮设置点击侦听器以替换屏幕:
class MainView : View() {
override val root: VBox by fxml("/Screen 1.fxml")
val button: Button by fxid("myButtonId")
init {
button.setOnAction {
replaceWith<Screen2>()
}
}
}

我以前没有尝试过,但是应该可以,以防万一,请随时发表评论。

关于kotlin - Kotlin | Tornadofx:如何在另一个fxml屏幕上单击鼠标时打开新的fxml屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61910314/

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