繁体   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