javafx progressbar динамически привязывает цвет к прогрессу

Так что мне нужно сделать таймер для ProgressIndicator/Bar. Я сделал "анимацию" с помощью временной шкалы, но я не знаю, как изменить цвет ProgressIndicator?

private ProgressIndicator progress = new ProgressIndicator();
private Timeline timeline = new Timeline();

public void doTime(int sec){

    Timeline time = new Timeline(

    new KeyFrame(
            Duration.ZERO,       
            new KeyValue(progress.progressProperty(), 1)
    ),
    new KeyFrame(
            Duration.seconds(sec), 
            new KeyValue(progress.progressProperty(), 0)
    )
);
time.setCycleCount(1);
time.play();
}

Я хотел бы иметь красный цвет, если прогресс на 0,33. Я не нашел слушателя для прогресса.

if (progress.getProgress() <= 0.33) {
     progress.setStyle("-fx-progress-color: red;");

}

У вас есть идеи, как это реализовать?

1 ответ

Вы можете добавить слушателя к индикаторам прогресса progressProperty():

progress.progressProperty().addListener((obs, oldProgress, newProgress) -> {
    if (newProgress <= 0.33) {
        progress.setStyle("-fx-progress-color: red;");

    } else {
        progress.setStyle("");
    }
});
Другие вопросы по тегам