我正在为JavaFXisShown中的 a 属性设置一个侦听器:Stage
stage.showingProperty().addListener((observable, old, showing) -> {
if (showing) {
System.out.println("Now it's shown");
} else {
System.out.println("Now it's hidden");
}
});
我有一个复杂的逻辑,可能会导致应用程序启动时不显示阶段(它只显示一个托盘栏图标)。当它开始隐藏时,我第一次显示它时,侦听器没有收到任何通知。之后它开始正常工作。我试图在一个最小的例子中重现它,但我还没有做到。
奇怪的是,如果我添加一个失效监听器:
stage.showingProperty().addListener(observable -> { });
它按预期工作。即使从第一次更改开始,更改侦听器也开始被调用。
什么可能导致这种行为?