• javafx 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) {
            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 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;
                }
            };
        }
    }
  • 相关阅读:
    C基础02天——笔记
    C基础-指针和数组等价转换
    C基础04天—选择排序笔记
    C基础-标准C语言头文件
    C基础-C的关键字
    Ubuntu linux 环境基本使用
    C基础01天——常量变量笔记
    根据评分,用js输出评价星星的样式
    横向滚动条展示 css
    ajax 城市区域选择三级联动
  • 原文地址:https://www.cnblogs.com/rojas/p/4724347.html
Copyright © 2020-2023  润新知