我目前遇到的一个问题是,我似乎无法更改在动态加载的AnchorPane
中实现的Label文本。我认为这可能与控制器以及JavaFX / TornadoFX如何工作有关,但我似乎无法找到我做错的事情。
问题本身发生在this class中,并在showSystemDetails()
方法中发生。我期望发生的是按下"系统细节"在侧边栏中的按钮,标签将更新为所需的值,但由于某种原因,这不会发生。
请随时指出我做错了什么,或提出任何建设性的批评。该项目仍处于全面发展阶段,因此很多事情仍然处于混乱状态。
答案 0 :(得分:1)
这不起作用的原因是,每次在菜单中选择某些内容时,您都会手动加载新版本的FMXL文件。最初由SystemDetailsViewProxy
加载的FXML文件已正确更新,但这不再是您在屏幕上显示的文件。
要查看更新的视图,请确保重新放置SystemDetailsViewProxy
实例的根节点。
例如,您可以更改DrawerMenuButton枚举以包含对SystemDetailsViewProxy :: class的引用而不是这两个字符串,并在单击菜单按钮时使用add(viewClass)
将正确的根节点添加到视图中。
此外,您应该使用ViewModels和绑定,而不是手动更新标签的text属性。你正在做很多手动/容易出错的工作,框架可以免费帮助你。
您的应用程序未在几个重要领域使用最佳实践,并且您正在为框架已经做得非常好的事情推出自己的解决方案:)
视图是由框架管理的单例,但您自己实例化它们而不是使用注入/查找。结果是没有调用重要的生命周期方法。
我还建议使用类型安全构建器而不是FXML。
希望这会有所帮助:)