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

惠州JavaFX进度条显示器和后台进程_北大青鸟IT学校

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


导读:前面惠州北大青鸟老师给大家介绍了JavaFX进度条显示器,下面我们一起来看看JavaFX进度条显示器和后台进程。

前面惠州北大青鸟老师给大家介绍了JavaFX进度条显示器,下面我们一起来看看JavaFX进度条显示器和后台进程。

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.ProgressIndicator;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) {
       primaryStage.setTitle("Background Processes");
       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 ProgressIndicator progressIndicator = new ProgressIndicator(0);        final HBox hb = new HBox();
       hb.setSpacing(5);
       hb.setAlignment(Pos.CENTER);
       hb.getChildren().addAll(label, progressIndicator);
       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);
               progressIndicator.setProgress(0);
               cancelButton.setDisable(false);
               copyWorker = createWorker();

               progressIndicator.progressProperty().unbind();
               progressIndicator.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);
               progressIndicator.progressProperty().unbind();
               progressIndicator.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技术排行
标签列表
网站分类
文章归档
最近发表