【问题标题】:How to share information across views / keep global state in TornadoFX如何在 TornadoFX 中跨视图共享信息/保持全局状态
【发布时间】: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 解决方案注入。

我在这里缺少什么?我怎样才能在全局范围内制作这个文件(我的整个应用程序都围绕它)以便能够在应用程序的所有部分使用它?

【问题讨论】:

    标签: kotlin tornadofx


    【解决方案1】:

    您是否尝试过使用范围? https://edvin.gitbooks.io/tornadofx-guide/part2/Scopes.html,有一些例子可以准确地解释你在那里寻找什么。先试试看吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-17
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多