【发布时间】:2020-08-12 17:09:48
【问题描述】:
我是 TornadoFX(或 JavaFX)的新手,我想构建一个应用程序,例如以下模型:
也就是说,我希望能够打开资源文件(例如 ZIP 文件)并在树视图中显示其内容,右侧有一个预览窗格。
我在 Views 中构建了 UI,使其看起来像这样:
这将是我的MenuView 类处理文件/编辑菜单:
类 MenuView : View() {
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 的其余部分。我的直觉会告诉我创建它以便:
MenuView - MenuViewController - FileHandler
所以FileHandler 是一个模型层,在应用程序中全局共享。但是我不知道如何保留这个全局对象,所以它不能被 TornadoFX DI 解决方案注入。
我在这里缺少什么?我怎样才能在全局范围内制作这个文件(我的整个应用程序都围绕它)以便能够在应用程序的所有部分使用它?
【问题讨论】: