gpt4 book ai didi

properties - JavaFX - 将监听器添加到 Pane 以检查它是否显示

转载 作者:行者123 更新时间:2023-12-02 17:33:45 27 4
gpt4 key购买 nike

过去几个月我一直在研究 JavaFX。我正在尝试找到一种方法来实现只要在根 Pane /场景上显示特定 Pane 时就会触发的监听器。在 Java 中,我可以使用 JPanel 上的 ancestorListener 实现它,如下所示,但我在 JavaFX 上找不到等效的方法。

JPanel panel = new JPanel ();
panel.addAncestorListener ( new AncestorListener ()
{
public void ancestorAdded ( AncestorEvent event ) {
System.out.println("This panel is shown on screen now");
}

public void ancestorRemoved ( AncestorEvent event ){}

public void ancestorMoved ( AncestorEvent event ){}
} );

最佳答案

您可以观察sceneProperty()。这将告诉您 Pane (或任何其他节点)是否是场景图的一部分:

pane.sceneProperty().addListener((obs, oldScene, newScene) -> {
if (newScene == null) {
// not showing...
} else {
// showing ...
}
});

如果您想更进一步,查看 Pane 是否是正在显示的窗口中的场景图的一部分,您可以使用 EasyBind :

EasyBind.select(pane.sceneProperty())
.select(Scene::windowProperty)
.select(Window::showingProperty)
.orElse(false)
.addListener((obs, wasShowing, isNowShowing) -> {
if (isNowShowing) {
// pane is showing in a window...
} else {
// pane is not showing in a window...
});

关于properties - JavaFX - 将监听器添加到 Pane 以检查它是否显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29562244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com