Попробуйте этот код, чтобы отключить ВСЕ кнопки в вашем контейнере ( root в моем случае):
root.getChildren().forEach(node -> {
if(node instanceof Button){
node.setDisable(true);
}
});
Сделайте то же самое, чтобы включить их, просто замените
node.setDisable(true);
с
node.setDisable(false);
Примечание. В моем приложении реализована похожая функция, ваша идея «отключения функций» с помощью «отключения кнопок» может быть не столь эффективной,могут быть другие узлы на вашей стадии, которые запускают событие.
Способ реализации функции «отключения»:
- Создайте пустой контейнер (не видимый) над всеми остальными (AnchorPane в моемcase)
- Установите% на его прозрачность (серый фильтр в моем случае), используя css:
-fx-background-color: linear-Gradient (вправо, rgba (72,85, 99, 0.69), rgba (41, 50, 60, 0.69));
Когда вы хотите отключить все остальные события, вы делаете эту AnchorPane видимой (охватывающей все узлы) и дающей визуальный эффект пользователям.
После того, как вы закончите,Вы отключаете его видимость.
Таким образом, вы будете закрывать кнопку X в окне, если вы используете недекорированную сцену, поэтому пользователи не могут закрыть приложение до завершения процесса (если они не нажмут ALT + F4 на клавиатуре).
Надеюсь, это поможет!