繁体   English   中英

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

[英]Kotlin|Tornadofx: How to open new fxml screen on mouse click in another fxml screen

我有一个非常简单的任务,但我做不到。

我有 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 中只能调用 function。 但在 MainView 中交换视图仅适用于

button("Go to Screen2") {
action {
replaceWith<Screen2>()
}

构造,我无法完成,因为我只能从 Screen1.fxml 中调用 function。 而且我在 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>()
        }
    }
}

我以前没有尝试过,但它应该可以工作,如果没有,请随时发表评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM