簡體   English   中英

如何跨視圖共享信息/在 TornadoFX 中保持全局 state

[英]How to share information across views / keep global state in TornadoFX

我是 TornadoFX(或 JavaFX)的新手,我想構建一個應用程序,例如以下模型:

在此處輸入圖像描述

也就是說,我希望能夠打開一個資源文件(例如 ZIP 文件)並在 treeview 中顯示其內容,右側有一個預覽窗格。

我在 Views 中構建了 UI,使其看起來像這樣:

在此處輸入圖像描述

這將是我的MenuView class 處理文件/編輯菜單:

class 菜單視圖:視圖(){

 private val menuController: MenuController by inject()

    override val root: Parent =
            menubar {
                menu("File") {
                    item("Open").action {
                        menuController.openFile(
                                chooseFile("Select file",
                                        arrayOf(FileChooser.ExtensionFilter("File", "*.*"))
                                ).first().path
                        )
                    }
                    separator()
                    item("Quit").action {

                    }
                }
                menu("Edit") {
                    item("Edit 1")
                    separator()
                    item("Edit 2")
                }
            }
}

但我不知道如何使我的FileChooser的結果可用於部分 UI 的 rest。 我的直覺會告訴我創建它,以便:

MenuView - MenuViewController - FileHandler

因此FileHandler是一個 model 層,在應用程序中全局共享。 但是我不知道如何保留這個全局 object 所以它不能被 TornadoFX DI 解決方案注入。

我在這里想念什么? 我怎樣才能在全球范圍內制作這個文件(我的整個應用程序都圍繞它)以便能夠在應用程序的所有部分使用它?

您是否嘗試過使用范圍? https://edvin.gitbooks.io/tornadofx-guide/part2/Scopes.html ,有一些例子可以准確地解釋你在那里尋找什么。 先試一試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM