首页 > 解决方案 > TornadoFX (JavaFX):当视图变得可见时如何执行操作

问题描述

我是 TornadoFX 的新手,无法检测视图是否可见
我的场景是:我有带有自定义菜单项的视图,我已经添加了框架以确保将这些都添加到我的主菜单栏中。如果给定的视图对用户可见,我现在要做的是使这些可见/不可见。我的视图(在这种情况下)是选项卡窗格中选项卡的一部分。如同...

root = tabpane {
  tab {
    content = MyView.root
...

我努力了

root.focusedProperty().onChange { state -> menu.isVisible = state }

这在我单击视图(在本例中为列表视图)时有效,但当我选择选项卡时,此视图不会自动聚焦。我也试过

root.visibleProperty().onChange { state -> menu.isVisible = state }

但是当通过选择选项卡“显示”视图时此属性不会更改(我假设此属性仅在我手动显示/隐藏视图时设置)

我可以将逻辑移到选项卡本身,但这会破坏封装。
视图不必知道它是选项卡的一部分,并且选项卡不必知道其内容树的一部分需要触发

是否有我可以使用的属性(或其他机制)来检测用户是否可以看到视图,即视图是否位于应用程序的最上方?

作为一个单独的问题,这是正确的方法还是有实现动态菜单的内置方法?- 这是我在 .net WPF 中认为理所当然的事情

标签: kotlinjavafxtornadofx

解决方案


推荐阅读