TornadoFX:标签文本未更新

TornadoFX: Label text not updating

我目前遇到的问题之一是我似乎无法更改在动态加载 AnchorPane 中实现的标签的文本。我认为这可能与控制器以及 JavaFX/TornadoFX 的工作方式有关,但我似乎无法找到我做错了什么。

问题本身出现在 this class 中,并且出现在 showSystemDetails() 方法中。我希望发生的情况是,按下边栏中的 "System Details" 按钮后,标签将更新为所需的值,但由于某种原因并没有发生。

请随时指出我做错了什么,或提供任何建设性的批评。该项目仍在全面开发中,所以很多东西仍然 messy/broken。

这不起作用的原因是每次在菜单中 select 时,您都在手动加载新版本的 FMXL 文件。 SystemDetailsViewProxy 最初加载的 FXML 文件已正确更新,但那不是您在屏幕上显示的文件了。

要查看更新后的视图,请确保将 SystemDetailsViewProxy 实例的根节点放回原处。

例如,您可以将 DrawerMenuButton 枚举更改为包含对 SystemDetailsViewProxy::class 的引用而不是这两个字符串,并使用 add(viewClass) 在单击菜单按钮时将正确的根节点添加到视图中。

此外,您应该使用 ViewModel 和绑定,而不是手动更新标签的文本 属性。您正在做大量 manual/error 框架可以免费帮助您完成的容易工作。

您的应用程序没有在几个重要领域使用最佳实践,并且您正在为框架已经做得很好的事情推出自己的解决方案:)

视图在由框架管理时是单例的,但是您自己实例化它们而不是使用 inject/find。结果是重要的生命周期方法没有被调用。

我还建议研究类型安全的构建器而不是 FXML。

希望这对您有所帮助:)