使用javafx达到特定条件时如何将ProgressIndicator更改为图标

How to change ProgressIndicator to an icon when reaching a certain condition with javafx

我有一个单独的 class 可以为我的 GUI 初始化一堆进度指示器

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

    public void initalizeIndicators() {

        //Initialize indicators and set properties
    

    }

}

我有另一个 class 在另一个 class

中执行一些繁重的后端计算
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 并将其更改为另一个图标。我将如何着手完成这个?

嗯,你知道,如果它到达那条线就完成了,所以你在控制之中,不需要共享任何标志。

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

只需在 removeProgressIndicator() 方法中实现您需要的逻辑,以便了解您要删除哪个 ProgressIndicator 以及如何删除它。

如果 HeavyCalculations class 拥有 ProgressIndicators 的一个实例,它可以在那个 class 中实现。或者不需要实例,通过调用静态方法。

例如,使用实例并使用 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 存储在列表中,这样您就可以轻松 retrieve/add/remove 它们。