ScheduledExecutorService.schedule :
Создает и выполняет одноразовое действие
Для периодического выполнения действия используйте ScheduledExecutorService.scheduleAtFixedRate :
Создает и выполняет периодическое действие
Кроме того, после скрытия основной стадии, runnable больше не вызывается, поэтому используйте setIconified(true)
вместо скрытия:
ScheduledExecutorService hider = Executors.newScheduledThreadPool(1);
hider.scheduleAtFixedRate(
() -> Platform.runLater(() -> {
if (!primaryStage.isIconified()) {
primaryStage.setIconified(true);
} else {
primaryStage.setIconified(false);
}
}),
5, //initial delay
5, //period delay
TimeUnit.SECONDS
);
Рассмотримальтернативная реализация с использованием инструментов анимации javafx, таких как PauseTransition
:
PauseTransition pause = new PauseTransition(Duration.seconds(5));
pause.setOnFinished(event ->{
if (! primaryStage.isIconified()) {
primaryStage.setIconified(true);
} else {
primaryStage.setIconified(false);
}
pause.play();
});
pause.play();