广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州如何将ProgressBar与后台进程一起使用?_北大青鸟IT学校

作者:邓华发布时间:2021-05-18分类:Java技术浏览:681


导读:如何将ProgressBar与后台进程一起使用?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么解答的。

如何将ProgressBar与后台进程一起使用?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么解答的。

实例

以下代码显示如何将ProgressBar与后台进程一起使用。

import javafx.application.Application;import javafx.beans.value.ChangeListener;import javafx.beans.value.ObservableValue;import javafx.concurrent.Task;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.geometry.Pos;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.Label;import javafx.scene.control.ProgressBar;import javafx.scene.layout.BorderPane;import javafx.scene.layout.HBox;import javafx.scene.paint.Color;import javafx.stage.Stage;public class Main extends Application {
 Task copyWorker;  public static void main(String[] args) {
   Application.launch(args);
 }

 @Override  public void start(Stage primaryStage) {
   Group root = new Group();
   Scene scene = new Scene(root, 330, 120, Color.WHITE);

   BorderPane mainPane = new BorderPane();
   root.getChildren().add(mainPane);    final Label label = new Label("Files Transfer:");    final ProgressBar progressBar = new ProgressBar(0);    final HBox hb = new HBox();
   hb.setSpacing(5);
   hb.setAlignment(Pos.CENTER);
   hb.getChildren().addAll(label, progressBar);
   mainPane.setTop(hb);    final Button startButton = new Button("Start");    final Button cancelButton = new Button("Cancel");    final HBox hb2 = new HBox();
   hb2.setSpacing(5);
   hb2.setAlignment(Pos.CENTER);
   hb2.getChildren().addAll(startButton, cancelButton);
   mainPane.setBottom(hb2);
   startButton.setOnAction(new EventHandler<ActionEvent>() {      public void handle(ActionEvent event) {
       startButton.setDisable(true);
       progressBar.setProgress(0);
       cancelButton.setDisable(false);
       copyWorker = createWorker();
       progressBar.progressProperty().unbind();
       progressBar.progressProperty().bind(copyWorker.progressProperty());
       copyWorker.messageProperty().addListener(new ChangeListener<String>() {          public void changed(ObservableValue<? extends String> observable,
             String oldValue, String newValue) {
           System.out.println(newValue);
         }
       });        new Thread(copyWorker).start();
     }
   });
   cancelButton.setOnAction(new EventHandler<ActionEvent>() {      public void handle(ActionEvent event) {
       startButton.setDisable(false);
       cancelButton.setDisable(true);
       copyWorker.cancel(true);
       progressBar.progressProperty().unbind();
       progressBar.setProgress(0);
       System.out.println("cancelled.");
     }
   });
   primaryStage.setScene(scene);
   primaryStage.show();
 }  public Task createWorker() {    return new Task() {
     @Override      protected Object call() throws Exception {        for (int i = 0; i < 10; i++) {
         Thread.sleep(2000);
         updateMessage("2000 milliseconds");
         updateProgress(i + 1, 10);
       }        return true;
     }
   };
 }
}

上面的代码生成以下结果。

JavaFX进度条3.png

想了解更多关于Java的资讯吗?可以来惠州北大青鸟新方舟校区了解一下。

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表