[英]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.