JavaFX - 进度指示器



一个进度指示器是一个UI控件,用于向用户指示任务的进度。它通常与Task API一起使用,以通知用户后台任务的进度以及完成用户操作需要多长时间。在本教程中,我们将学习如何在JavaFX中创建和使用进度指示器。在此之前,让我们看看一般的进度指示器是什么样的:

Sample progress indicator

JavaFX中的进度指示器

在JavaFX中,进度指示器由名为ProgressIndicator的类表示。此类属于包javafx.scene.control。通过实例化此类,我们可以在JavaFX中创建一个进度指示器。ProgressIndicator类的构造函数列在下面:

  • ProgressIndicator() - 它构造一个没有初始进度值的新进度指示器。

  • ProgressIndicator(double progress) - 它构造一个具有指定初始进度值的新进度指示器。

示例

以下程序演示如何在JavaFX中创建一个进度指示器。将此代码保存在名为ProgressindicatorJavafx.java的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ProgressIndicator;
import javafx.stage.Stage;
public class ProgressindicatorJavafx extends Application {
   @Override
   public void start(Stage stage) {
      // Creating a progress indicator without an initial progress value
      ProgressIndicator progress = new ProgressIndicator();
      // Create a scene and stage
      Scene scene = new Scene(progress, 400, 300);
      stage.setScene(scene);
      stage.setTitle("Progress Indicator in Javafx");
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

要从命令提示符编译和执行保存的Java文件,请使用以下命令:

javac --module-path %PATH_TO_FX% --add-modules javafx.controls ProgressindicatorJavafx.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ProgressindicatorJavafx

输出

当我们执行上述代码时,它将生成以下输出。

ProgressIndicator Output

具有初始进度值的进度指示器

我们可以使用ProgressIndicator类的参数化构造函数将初始进度值设置为进度指示器。构造函数接受一个进度值作为参数,该参数是介于0.0和1.0之间的双精度类型。这里,0.0表示没有进度,1.0表示完成。如果进度值为负数,则进度指示器是不确定的,这意味着它不显示任何特定的进度量。

示例

在下面的示例中,我们创建了一个用特定进度值初始化的进度指示器。此外,我们还创建了两个分别标记为“增加”和“减少”的按钮。“增加”按钮单击后会增加进度值,“减少”按钮单击后会减少进度值。将此代码保存在名为Javafxprogress.java的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class Javafxprogress extends Application {
   @Override
   public void start(Stage stage) {
      // Create a progress indicator with an initial progress of 0.5
      ProgressIndicator progressIndctr = new ProgressIndicator(0.5);
      // Create a button that increases the progress by 0.1
      Button buttonOne = new Button("Increase");
      buttonOne.setOnAction(e -> {
         // Get the current progress value
         double progress = progressIndctr.getProgress();
         // Increase the progress by 0.1
         progress += 0.1;
         // Set the new progress value
         progressIndctr.setProgress(progress);
      });
      // Create second button that decreases the progress by 0.1
      Button buttonTwo = new Button("Decrease");
      buttonTwo.setOnAction(e -> {
         // Get the current progress value
         double progress = progressIndctr.getProgress();
         // Decrease the progress by 0.1
         progress -= 0.1;
         // Set the new progress value
         progressIndctr.setProgress(progress);
      });
      // Create an HBox to hold the progress indicator and the button
      HBox hbox = new HBox(10);
      hbox.getChildren().addAll(progressIndctr,buttonOne, buttonTwo);
      // Create a scene with the HBox and set it to the stage
      Scene scene = new Scene(hbox, 400, 300);
      stage.setScene(scene);
      stage.setTitle("Progress Indicator in JavaFX");
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

使用以下命令从命令提示符编译和执行保存的Java文件:

javac --module-path %PATH_TO_FX% --add-modules javafx.controls Javafxprogress.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls Javafxprogress

输出

执行上述代码后,将生成以下输出。

ProgressIndicator Output2
广告