Как изменить ProgressIndicator на значок при достижении определенного состояния с помощью javafx

У меня есть отдельный класс, который инициализирует группу индикаторов прогресса для моего графического интерфейса.

public class ProgressIndicators {
    private ProgressIndicator firstIndicator;
    private ProgressIndicator secondIndicator;
    private ProgressIndicator thirdIndicator;

    public void initalizeIndicators() {

        //Initialize indicators and set properties
    

    }

}

У меня есть еще один класс, который выполняет тяжелые внутренние вычисления в другом классе.

public class HeavyCalculations {

    private boolean isFinished;

    public HeavyCalculations() {
        isFinished = false;
        doHeavyCalculations()
    }

    public doHeavyCalculations() {
        // Do Heavy Calculations that may take up to ten minutes
        isFinished = true; // Set isFinished to true once heavy calculations are done
    }

}

Как только для переменной isFinished установлено значение true, я хотел бы удалить один из ProgressIndicator и изменить его на другой значок. Как мне это сделать?


person AJ Goudel    schedule 25.12.2020    source источник
comment
Индикатор прогресса обновляется на основе «тяжелых вычислений»? Должен ли индикатор прогресса измениться на что-то другое, когда он достигнет 100%?   -  person swpalmer    schedule 26.12.2020


Ответы (1)


Ну, вы знаете, что если он достигает этой линии, то вы контролируете ситуацию, и вам не нужно делиться каким-либо флагом.

public doHeavyCalculations() {
    isFinished = true;
    removeProgressIndicator(); 
}

Просто реализуйте необходимую логику, чтобы знать, какие ProgressIndicator вы хотите удалить и как их удалить, внутри метода removeProgressIndicator().

Если класс HeavyCalculations владеет экземпляром ProgressIndicators, он может быть реализован в этом классе. Или без экземпляра, вызывая статический метод.

Например, используя экземпляр и параметр int id:

public doHeavyCalculations() {
    isFinished = true;
    indicatorInstance.removeProgressIndicator(1); 
}

.

public class ProgressIndicators {
   private ProgressIndicator firstIndicator;
   private ProgressIndicator secondIndicator;
   private ProgressIndicator thirdIndicator;

   public void removeProgressIndicator(int id) {
      //remove logic
   }
 }

Я бы предложил хранить Indicators в списке, чтобы вы могли легко извлекать/добавлять/удалять их.

person aran    schedule 25.12.2020
comment
Ах, спасибо, я думал, что мне нужно реализовать наблюдаемое, но это работает и очень просто - person AJ Goudel; 26.12.2020