我有一个非常简单的任务,但不能完成。
我有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中的视图交换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>()
}
}
}
我以前没有尝试过,但是应该可以,如果没有的话,请随时发表评论。