1

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

问题本身发生在此类中,并且发生在showSystemDetails()方法中。我希望发生的是,在按下侧边栏中的“系统详细信息”按钮时,标签会更新为所需的值,但由于某种原因这不会发生。

请随时指出我做错了什么,或提供任何建设性的批评。该项目仍在全面开发中,因此很多事情仍然混乱/损坏。

4

1 回答 1

1

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

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

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

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

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

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

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

希望这可以帮助 :)

于 2017-07-30T20:34:22.647 回答