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("");
}
});