iamaamir

One time tasking in javafx

Mar 12th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.40 KB | None | 0 0
  1. import javafx.application.Application;
  2. import javafx.application.Platform;
  3. import javafx.concurrent.Task;
  4. import javafx.concurrent.Worker;
  5. import javafx.geometry.Pos;
  6. import javafx.scene.Scene;
  7. import javafx.scene.control.Button;
  8. import javafx.scene.control.Label;
  9. import javafx.scene.control.ProgressBar;
  10. import javafx.scene.effect.GaussianBlur;
  11. import javafx.scene.layout.StackPane;
  12. import javafx.scene.layout.VBox;
  13. import javafx.scene.text.Font;
  14. import javafx.scene.text.FontWeight;
  15. import javafx.stage.Stage;
  16.  
  17.  
  18. /*
  19.  @Author : Aamir khan
  20.  */
  21. public class Main extends Application {
  22.  
  23.     @Override
  24.     public void start(Stage window) throws Exception {
  25.         StackPane root = new StackPane();
  26.         VBox pane = new VBox();
  27.  
  28.         Task task = new Task<Integer>() {
  29.             @Override
  30.             public Integer call() throws Exception {
  31.  
  32.                 Label counter = new Label();
  33.                 counter.setFont(Font.font("Arial", FontWeight.SEMI_BOLD, 25));
  34.                 StackPane cover = new StackPane();
  35.  
  36.                 Platform.runLater(() -> {
  37.                     cover.getChildren().add(counter);
  38.                     pane.setEffect(new GaussianBlur(2.0f));
  39.                     root.getChildren().add(cover);
  40.                     counter.textProperty().bind(this.messageProperty());
  41.                 });
  42.  
  43.                 int i;
  44.                 final int max = 100;
  45.  
  46.                 for (i = 1; i <= max; i++) {
  47.                     if (isCancelled()) {
  48. //                        updateMessage("Task Canclled");
  49.                         System.out.println("Task Canclled");
  50.                         break;
  51.                     }
  52.  
  53.                     updateMessage("Number = " + i);
  54.                     System.out.println("Number = " + i);
  55.                     updateProgress(i, max);
  56.  
  57.                     try {
  58.                         Thread.sleep(50);
  59.                     } catch (InterruptedException e) {
  60.                     }
  61.                     if (isCancelled()) {
  62.                         updateMessage("Task Cancelled");
  63.                     }
  64.  
  65.                 }
  66.                 return i;
  67.             }
  68.  
  69.             @Override
  70.             public void succeeded() {
  71.                 super.succeeded();
  72.                 root.getChildren().remove(1);
  73.                 pane.setEffect(null);
  74.             }
  75.         };
  76.  
  77.         task.stateProperty().addListener(
  78.                 (ob, o, n) -> {
  79.                     if (n.equals(Worker.State.SCHEDULED)) {
  80.                         System.out.println("Schedule");
  81.                     }
  82.  
  83.                     if (n.equals(Worker.State.SUCCEEDED)) {
  84.                         System.out.println("kahatam");
  85.                     }
  86.                 }
  87.         );
  88.         Button start = new Button("Start");
  89.         start.setOnAction(e -> {
  90.             Thread t = new Thread(task);
  91.             t.setDaemon(true);
  92.             t.start();
  93.         });
  94.  
  95.         ProgressBar pb = new ProgressBar();
  96.         pb.progressProperty().bind(task.progressProperty());
  97.  
  98.         pane.setSpacing(5);
  99.         pane.getChildren().addAll(pb, start);
  100.         pane.setAlignment(Pos.CENTER);
  101.  
  102.         root.getChildren().add(pane);
  103.  
  104.         window.setTitle("One time tasking in javafx");
  105.         window.setScene(new Scene(root, 400, 250));
  106.         window.show();
  107.  
  108.     }
  109.  
  110.     public static void main(String[] args) {
  111.         launch(args);
  112.     }
  113.  
  114. }
Add Comment
Please, Sign In to add comment