【问题标题】:TornadoFX: Label text not updatingTornadoFX:标签文本未更新
【发布时间】:2017-07-30 14:43:12
【问题描述】:

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

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

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

【问题讨论】:

  • 您现在已经从 HEAD 中删除了 SystemDetailsViewProxy.kt 类,所以我很难测试。你能把它放回去吗?
  • 嘿 Edvin,请尝试查看 feature/APTFX-3-Create-system-details-view 分支。感谢您的努力!

标签: javafx label kotlin tornadofx


【解决方案1】:

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

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

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

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

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

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

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

希望这会有所帮助:)

【讨论】:

  • 嘿 Edvin,非常感谢您的澄清和补充说明!看来我需要进一步研究 JavaFX 和 TornadoFX 才能更好地掌握它的结构。
  • 太棒了 :) 如果您有任何问题或需要指导,请加入我们的 Slack! kotlinlang.slack.com/messages/tornadofx
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多