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