JavaFX8在屏幕上显示节点时触发事件

JavaFX8在屏幕上显示节点时触发事件,javafx,javafx-8,Javafx,Javafx 8,在JavaFX8中,我在选项卡式窗格中有几个选项卡,这些选项卡是根据一些逻辑动态添加的。选项卡的内容是从FXML加载的 当选项卡处于活动状态且可见时,必须通过启动任务来填充该选项卡中的一个节点。如果选择了其他选项卡,则此任务必须停止。i、 e当选项卡内容可见时,我应该启动任务,如果选项卡不再可见,我需要停止任务 我已经尝试将changeListener附加到选项卡中某个节点的visibleProperty,但这不会产生预期的changeEvent 有什么想法吗?将侦听器附加到选项卡窗格选择模型的

在JavaFX8中,我在选项卡式窗格中有几个选项卡,这些选项卡是根据一些逻辑动态添加的。选项卡的内容是从FXML加载的

当选项卡处于活动状态且可见时,必须通过启动任务来填充该选项卡中的一个节点。如果选择了其他选项卡,则此任务必须停止。i、 e当选项卡内容可见时,我应该启动任务,如果选项卡不再可见,我需要停止任务

我已经尝试将changeListener附加到选项卡中某个节点的visibleProperty,但这不会产生预期的changeEvent


有什么想法吗?

将侦听器附加到
选项卡窗格
选择模型的
selectedItem
属性:

tabPane.getSelectionModel()
    .selectedItemProperty()
    .addListener((obs, oldTab, newTab) -> {
        // if oldTab == tab with your node, stop task
        // if newTab == tab with your node, start task
    });

问题是,我不知道代码中标签的内容是什么。i、 e根据特定条件动态加载选项卡内容。例如:对于已定义的选项卡,我有100个可能的内容(不是节点,而是100个不同的FXML),我可以从100个中加载1个。当然,我可以添加额外的逻辑来确定是否存在特定的FXML,但我的问题更一般,而不是特定于选项卡,是否有一种方法可以查询节点以查看它当前是否显示在屏幕上?通过这种方式,我可以使用FXML的控制器来启动任务