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