簡體   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