zoukankan      html  css  js  c++  java
  • 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;
                }
            };
        }
    }
  • 相关阅读:
    四种访问修饰符详解(推荐)
    三层架构中DAL层Sqlhelper怎样快速掌握?(常用)
    ASP.NET中最常用的验证控件使用方法(推荐)
    .NetFrom验证方便的webconfig 配置及前台使用(推荐)
    CefSharp访问需要认证网页或接口(在Request的Headers中添加认证Token)
    CentOS7中配置vsftpd
    CentOS7下安装RabbitMQ
    CentOS7下让Asp.Net Core的网站自动运行
    Winform下的Combox根据值来选中项
    golang简单实现jwt验证(beego、xorm、jwt)
  • 原文地址:https://www.cnblogs.com/rojas/p/4724347.html
Copyright © 2011-2022 走看看