TornadoFX:标签文本未更新

时间:2017-07-30 14:43:13

标签: javafx label kotlin tornadofx

我目前遇到的一个问题是,我似乎无法更改在动态加载的AnchorPane中实现的Label文本。我认为这可能与控制器以及JavaFX / TornadoFX如何工作有关,但我似乎无法找到我做错的事情。

问题本身发生在this class中,并在showSystemDetails()方法中发生。我期望发生的是按下"系统细节"在侧边栏中的按钮,标签将更新为所需的值,但由于某种原因,这不会发生。

请随时指出我做错了什么,或提出任何建设性的批评。该项目仍处于全面发展阶段,因此很多事情仍然处于混乱状态。

1 个答案:

答案 0 :(得分:1)

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

要查看更新的视图,请确保重新放置SystemDetailsViewProxy实例的根节点。

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

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

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

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

我还建议使用类型安全构建器而不是FXML。

希望这会有所帮助:)