Я настраиваю прослушиватель для свойства isShown
Stage
в JavaFX:
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 -> { });
Работает как положено. Слушатель изменений начинает вызываться даже с первого изменения.
Что может быть причиной такого поведения?