Ejemplo n.º 1
0
  public Veld2Verkeerstechniek(
      LeerlingController llnCntrl, SchermController schermCtrl, EvaController evaCtrl) {
    evaController = evaCtrl;
    schermController = schermCtrl;
    llnController = llnCntrl;
    llnController.getLeerling().addView(this);
    hoogte = schermController.getHoogte();
    breedte = schermController.getBreedte();
    mainGP = new GridPane();

    // evaSelector
    eva = new EvaSelector(evaController);

    // labels
    kleur = new Button("Kleur kiezen");
    venster = new Button("Extra venster");

    kleur.setMinSize(120, 30);
    kleur.setMaxSize(120, 30);
    venster.setMinSize(120, 30);
    venster.setMaxSize(120, 30);

    kleur.setStyle(
        "-fx-border-color: black; -fx-border-width:1; -fx-border-style: solid; -fx-background-color: WHITE");
    kleur.setAlignment(Pos.CENTER);
    venster.setStyle(
        "-fx-border-color: black; -fx-border-width:1; -fx-border-style: solid; -fx-background-color: WHITE");
    venster.setAlignment(Pos.CENTER);

    kleur.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            selecteerKleur();
          }
        });
    venster.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            selecteerVenster();
          }
        });

    labels = new HBox();
    labels.setSpacing(15);
    labels.setTranslateY(-hoogte * 0.75);
    labels.setTranslateX(20);
    labels.getChildren().addAll(kleur, venster);

    // alle afbeeldingen
    // Links
    links = new GridPane();
    openbareWegImg =
        new Onderdeel("resource/Verkeerstechniek/openbareWeg", -140, 160, evaController);
    openbareWegImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKPLAATS_ID);
          }
        });
    richtingaanwijzersImg =
        new Onderdeel("resource/Verkeerstechniek/richtingaanwijzers", 120, 140, evaController);
    richtingaanwijzersImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKRICHTINGAANWIJZERS_ID);
          }
        });
    rechtsafImg = new Onderdeel("resource/Verkeerstechniek/rechtsaf", 220, 160, evaController);
    rechtsafImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKRECHTSAF_ID);
          }
        });
    linksafImg = new Onderdeel("resource/Verkeerstechniek/linksaf", 120, 190, evaController);
    linksafImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKLINKSAF_ID);
          }
        });
    kruisenImg = new Onderdeel("resource/Verkeerstechniek/kruisen", 60, 155, evaController);
    kruisenImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKKRUISEN_ID);
          }
        });
    // Rechts
    rechts = new GridPane();
    voorrangImg = new Onderdeel("resource/Verkeerstechniek/voorrang", -140, 160, evaController);
    voorrangImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKVOORRANG_ID);
          }
        });
    verkeerstekensImg =
        new Onderdeel("resource/Verkeerstechniek/verkeerstekens", -25, 140, evaController);
    verkeerstekensImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKVERKEERSTEKENS_ID);
          }
        });
    snelheidImg = new Onderdeel("resource/Verkeerstechniek/snelheid", 30, 155, evaController);
    snelheidImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKSNELHEID_ID);
          }
        });
    afstandImg = new Onderdeel("resource/Verkeerstechniek/afstand", -25, 190, evaController);
    afstandImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKAFSTAND_ID);
          }
        });
    inhalenImg = new Onderdeel("resource/Verkeerstechniek/inhalen", 220, 160, evaController);
    inhalenImg.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            Veld2Verkeerstechniek.this.schermController.setScherm(
                MainApp.VELD2VERKEERSTECHNIEKINHALEN_ID);
          }
        });
    // pijlen center
    pijlen = new Pijlen(evaController, 300);

    // GridPane links
    links.add(inhalenImg, 0, 0);
    links.add(richtingaanwijzersImg, 0, 1);
    links.add(kruisenImg, 0, 2);
    links.add(linksafImg, 0, 3);
    links.add(rechtsafImg, 0, 4);

    // GridPane rechts
    rechts.add(voorrangImg, 0, 0);
    rechts.add(verkeerstekensImg, 0, 1);
    rechts.add(snelheidImg, 0, 2);
    rechts.add(afstandImg, 0, 3);
    rechts.add(openbareWegImg, 0, 4);

    // opmaak
    // algemeen
    mainGP.setHgap(50);
    // links
    links.setAlignment(Pos.CENTER);
    links.setVgap(20);
    links.setMaxWidth(80);
    inhalenImg.setFitHeight(80);
    inhalenImg.setFitWidth(80);
    inhalenImg.setTranslateX(180);
    richtingaanwijzersImg.setFitHeight(80);
    richtingaanwijzersImg.setFitWidth(80);
    richtingaanwijzersImg.setTranslateX(75);
    richtingaanwijzersImg.setTranslateY(-30);
    kruisenImg.setFitHeight(80);
    kruisenImg.setFitWidth(80);
    kruisenImg.setTranslateX(10);
    linksafImg.setFitHeight(80);
    linksafImg.setFitWidth(80);
    linksafImg.setTranslateX(75);
    linksafImg.setTranslateY(30);
    rechtsafImg.setFitHeight(80);
    rechtsafImg.setFitWidth(80);
    rechtsafImg.setTranslateX(180);
    // rechts
    rechts.setAlignment(Pos.CENTER);
    rechts.setVgap(20);
    rechts.setMaxWidth(80);
    voorrangImg.setFitHeight(80);
    voorrangImg.setFitWidth(80);
    voorrangImg.setTranslateX(-180);
    verkeerstekensImg.setFitHeight(80);
    verkeerstekensImg.setFitWidth(80);
    verkeerstekensImg.setTranslateX(-75);
    verkeerstekensImg.setTranslateY(-30);
    snelheidImg.setFitHeight(80);
    snelheidImg.setFitWidth(80);
    snelheidImg.setTranslateX(-10);
    afstandImg.setFitHeight(80);
    afstandImg.setFitWidth(80);
    afstandImg.setTranslateX(-75);
    afstandImg.setTranslateY(30);
    openbareWegImg.setFitHeight(80);
    openbareWegImg.setFitWidth(80);
    openbareWegImg.setTranslateX(-180);
    // pijlen center
    pijlen.setAlignment(Pos.CENTER);
    pijlen.setTranslateY(10);

    // Exit button
    exit = new Button("Ga terug");
    exit.setTranslateX(50);
    exit.setTranslateY(75);

    eva.setTranslateX(-50);
    eva.setTranslateY(75);

    // eventhandler
    exit.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent e) {
            exitVerkeerstechniek();
          }
        });
    exit.setStyle("-fx-background-color: #5F6A95; -fx-text-fill:white");

    for (Node c : links.getChildren()) {
      if (c instanceof Onderdeel) {
        c.setOnMouseClicked(
            new EventHandler<MouseEvent>() {
              @Override
              public void handle(MouseEvent e) {
                KleurKiezerHouder.show(links, (Onderdeel) c);
              }
            });
      }
    }

    for (Node c : rechts.getChildren()) {
      if (c instanceof Onderdeel) {
        c.setOnMouseClicked(
            new EventHandler<MouseEvent>() {
              @Override
              public void handle(MouseEvent e) {
                KleurKiezerHouder.show(rechts, (Onderdeel) c);
              }
            });
      }
    }

    eva.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            update();
          }
        });
    this.setOnMouseClicked(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent e) {
            update();
          }
        });

    // achtergrond
    achtergrond = new ImageView("resource/Verkeerstechniek/achtergrondVt.png");
    achtergrond.setTranslateX(breedte / 2);
    mainGP.setTranslateX(-breedte * 0.53);
    mainGP.setTranslateY(5);
    mainGP.setMinWidth(breedte);
    mainGP.setMaxWidth(breedte);

    // Alle Gridpanes toevoegen an hoofd GridPane
    // volgorde is belangrijk, niet aanpassen!
    mainGP.add(pijlen, 2, 0);
    mainGP.add(rechts, 3, 0);
    mainGP.add(links, 1, 0);
    mainGP.add(exit, 3, 1);
    mainGP.add(labels, 2, 1);
    mainGP.add(eva, 1, 1);
    mainGP.setAlignment(Pos.CENTER);
    // mainGP.setStyle("-fx-background-color: #003399");

    this.getChildren().add(achtergrond);
    this.getChildren().add(mainGP);
    this.setAlignment(Pos.CENTER);

    selecteerKleur();
    update();
  }
Ejemplo n.º 2
0
  private void buildGUI() {
    //    Group g = new Group();
    //    Stage s = new Stage();
    //    Scene sc = new Scene(g,500,300);
    //    s.setScene(sc);
    //    s.show();

    //	BorderPane backPanel = new BorderPane();
    imagePanel = new ImagePanel(width, height);
    //    backPanel.setCenter(i);
    g.getChildren().add(imagePanel);

    Button b1 = new Button();
    b1.setText("Save");
    b1.setTranslateX(200);
    b1.setTranslateY(400);
    g.getChildren().add(b1);
    b1.setOnMouseClicked(
        new EventHandler<Event>() {

          @Override
          public void handle(Event arg0) {
            // TODO Auto-generated method stub
            WritableImage wi = new WritableImage(width, height);
            sc.snapshot(wi);
            File f = new File("g.jpg");
            postMessage("The picture has been saved!");
            try {
              ImageIO.write(SwingFXUtils.fromFXImage(wi, null), "png", f);
            } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
              postMessage("Error!" + e.getMessage());
            }
          }
        });

    b2 = new Button();
    b2.setText("Draw");
    b2.setTranslateX(100);
    b2.setTranslateY(400);
    g.getChildren().add(b2);
    b2.setOnMouseClicked(
        new EventHandler<Event>() {

          @Override
          public void handle(Event arg0) {
            // TODO Auto-generated method stub
            //			l = new Reader.readline();

          }
        });

    Button b3 = new Button();
    b3.setText("Exit");
    b3.setTranslateX(300);
    b3.setTranslateY(400);
    g.getChildren().add(b3);
    b3.setOnMouseClicked(
        new EventHandler<MouseEvent>() {

          public void handle(MouseEvent arg0) {
            // TODO Auto-generated method stub
            System.exit(0);
          }
        });

    messageView = new TextArea();
    messageView.setTranslateX(10);
    messageView.setTranslateY(450);
    g.getChildren().add(messageView);
  }
Ejemplo n.º 3
0
  @Override
  public void start(Stage primaryStage) {
    importer = new DataImporter();
    mainStage = primaryStage;

    Button btn1 = new Button();
    btn1.setText("Import US Price Data");
    btn1.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            chooseFile();
          }
        });

    Button btn2 = new Button();
    btn2.setText("Import CAD Price Data");
    btn2.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            // File cadPrices = chooseFile();
            File cadPrices = new File("Prices_CAD.csv");
            CSVParser records = null;
            try {
              records = importer.importCsv(cadPrices);
            } catch (IOException e) {
              e.printStackTrace();
            }
            importer.importPrices(records, Stock.Classifications.CAD.toString());
          }
        });

    Button btn3 = new Button();
    btn3.setText("Import ADR Price Data");
    btn3.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            chooseFile();
          }
        });

    Button btn4 = new Button();
    btn4.setText("Import Price Index Data");
    btn4.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            chooseFile();
          }
        });

    StackPane root = new StackPane();
    Image icon = new Image(getClass().getResourceAsStream("scotiaframe.png"));
    mainStage.getIcons().add(icon);
    btn1.setTranslateY(-75);
    btn2.setTranslateY(-25);
    btn3.setTranslateY(25);
    btn4.setTranslateY(75);
    root.getChildren().add(btn1);
    root.getChildren().add(btn2);
    root.getChildren().add(btn3);
    root.getChildren().add(btn4);

    double width = 400;
    double height = 300;

    Scene scene = new Scene(root, width, height);
    primaryStage.setMinWidth(width);
    primaryStage.setMinHeight(height);
    primaryStage.setTitle("Moore Wealth Management");
    primaryStage.setScene(scene);
    primaryStage.show();
  }
Ejemplo n.º 4
0
  @Override
  public void start(Stage primaryStage) {
    // Create four buttons, for each of the read/writing ways.
    Button btnTextNoBuffer = new Button();
    btnTextNoBuffer.setText("Save and load to text file, no buffer.");
    Button btnTextWithBuffer = new Button();
    btnTextWithBuffer.setText("Save and load to text file, with buffer.");
    Button btnBinaryNoBuffer = new Button();
    btnBinaryNoBuffer.setText("Save and load to Mapped file.");
    Button btnBinaryWithBuffer = new Button();
    btnBinaryWithBuffer.setText("Save and load to binary file, with buffer.");

    // Textfield to enter the number of edges + label
    TextField nrOfEdges = new TextField();
    Label lbl = new Label();
    lbl.setText("Enter your desired level.");

    // Label to present the read/write time.
    Label speed = new Label();
    speed.setText("The write speed will be shown here.");
    // New canvas
    kochPanel = new Canvas(kpWidth, kpHeight);
    kochPanel.setTranslateX(100);

    // position the elements
    btnTextNoBuffer.setTranslateY(-80);
    btnTextWithBuffer.setTranslateY(-40);
    btnBinaryWithBuffer.setTranslateY(40);
    btnTextNoBuffer.setTranslateX(-240);
    btnTextWithBuffer.setTranslateX(-240);
    btnBinaryNoBuffer.setTranslateX(-240);
    btnBinaryWithBuffer.setTranslateX(-240);
    nrOfEdges.setTranslateY(-220);
    nrOfEdges.setTranslateX(-310);
    nrOfEdges.setMaxWidth(50);
    lbl.setTranslateX(-240);
    lbl.setTranslateY(-200);
    speed.setTranslateY(-240);

    StackPane root = new StackPane();
    // root.getChildren().add(btnTextNoBuffer);
    // root.getChildren().add(btnTextWithBuffer);
    root.getChildren().add(btnBinaryNoBuffer);
    // root.getChildren().add(btnBinaryWithBuffer);
    // root.getChildren().add(nrOfEdges);
    // root.getChildren().add(lbl);
    root.getChildren().add(kochPanel);
    root.getChildren().add(speed);

    Scene scene = new Scene(root, 700, 500);

    primaryStage.setTitle("Edges and stuff");
    primaryStage.setScene(scene);
    primaryStage.show();

    // Event handlers for buttons
    //        btnTextNoBuffer.setOnMouseClicked(event -> {
    //            int i = Integer.parseInt(nrOfEdges.getText());
    //            currentLevel = i;
    //            clearKochPanel();
    //            createKochFractal(i);
    //            double x = 0;
    //            try {
    //                x = saveTextFileNoBuffer();
    //            } catch (IOException e) {
    //                e.printStackTrace();
    //            }
    //            speed.setText(String.valueOf((x / 1000000)));
    //            //drawAllEdges();
    //        });

    //        btnTextWithBuffer.setOnMouseClicked(event -> {
    //            int i = Integer.parseInt(nrOfEdges.getText());
    //            currentLevel = i;
    //            clearKochPanel();
    //            createKochFractal(i);
    //            double x = 0;
    //            try {
    //                x = saveTextFileWithBuffer();
    //            }
    //            catch (Exception ex)
    //            {
    //                ex.printStackTrace();
    //            }
    //            speed.setText(String.valueOf(x / 1000000));
    //            //drawAllEdges();
    //        });

    btnBinaryNoBuffer.setOnMouseClicked(
        event -> {
          // int i = Integer.parseInt(nrOfEdges.getText());
          // currentLevel = i;
          //            if (i > 10)
          //            {
          //                speed.setText("Too high of a level count!");
          //                throw new UnsupportedOperationException();
          //            }
          clearKochPanel();
          // createKochFractal(i);
          double x = 0;
          try {
            x = loadBinaryFile();
          } catch (Exception e) {
            e.printStackTrace();
          }
          speed.setText(String.valueOf(x / 1000000));
          // drawAllEdges();
        });

    btnBinaryWithBuffer.setOnMouseClicked(
        event -> {
          int i = Integer.parseInt(nrOfEdges.getText());
          currentLevel = i;
          clearKochPanel();
          createKochFractal(i);
          double x = 0;
          try {
            x = saveBinaryFileWithBuffer();
          } catch (Exception e) {
            e.printStackTrace();
          }
          speed.setText(String.valueOf(x / 1000000));
        });
    Thread t =
        new Thread() {
          public void run() {
            watchForNewEdges();
          }
        };
    t.start();
  }
Ejemplo n.º 5
0
  @Override
  public void start(Stage primaryStage) {
    try {
      screen = primaryStage;
      screen.setOnCloseRequest(
          e -> {
            engine.interrupt();
          });

      lives = new SimpleDoubleProperty(1);
      lives.addListener(
          e -> {
            if (lives.get() == 0) {
              engine.interrupt();
              newGame.setText("Start new game");
              changeScene();
            }
          });

      logo = new Image(getClass().getResourceAsStream("logo.png"), 256, 256, true, true);
      logoView = new ImageView(logo);
      menu = new StackPane(logoView);

      livesText = new Text(String.valueOf((int) lives.get()));
      slowDownsText = new Text(String.valueOf(slowDownCount));
      score = new Text("Score");
      scorePoints = new Text(String.valueOf(points));

      livesText.setFill(Color.BEIGE);
      slowDownsText.setFill(Color.BEIGE);
      score.setFill(Color.BEIGE);
      scorePoints.setFill(Color.BEIGE);

      live = new Image(getClass().getResourceAsStream("live.png"));
      slowDown = new Image(getClass().getResourceAsStream("slowdown.png"));

      spotView = new ImageView(new Image(getClass().getResourceAsStream("spot.png")));
      liveView = new ImageView(live);
      slowDownView = new ImageView(slowDown);
      liveCounterView = new ImageView(live);
      slowDownCounterView = new ImageView(slowDown);

      spotView.setVisible(false);
      liveView.setVisible(false);
      slowDownView.setVisible(false);

      spotView.setOnMouseClicked(
          e -> {
            spotView.setVisible(false);
            clicked = true;
            points++;
            if (time > 400) {
              time -= 20;
            }
            scorePoints.setText(String.valueOf(points * 10));
          });

      liveView.setOnMouseClicked(
          e -> {
            liveView.setVisible(false);
            clicked = true;
            points++;
            lives.set(lives.get() + 1);
            livesText.setText(String.valueOf((int) lives.get()));
            scorePoints.setText(String.valueOf(points * 10));
          });

      slowDownView.setOnMouseClicked(
          e -> {
            slowDownView.setVisible(false);
            clicked = true;
            points++;
            slowDownCount++;
            slowDownsText.setText(String.valueOf(slowDownCount));
            scorePoints.setText(String.valueOf(points * 10));
          });

      slowDownCounterView.setOnMouseClicked(
          e -> {
            if (slowDownCount > 0) {
              slowDownCount--;
              slowDownsText.setText(String.valueOf(slowDownCount));
              time += 150;
            }
          });

      Separator sepOne = new Separator(Orientation.VERTICAL);
      sepOne.setOpacity(0.1);

      Separator sepTwo = new Separator(Orientation.VERTICAL);
      sepTwo.setOpacity(0.1);

      HBox header =
          new HBox(
              5,
              liveCounterView,
              livesText,
              sepOne,
              slowDownCounterView,
              slowDownsText,
              sepTwo,
              score,
              scorePoints);
      header.setAlignment(Pos.CENTER_LEFT);
      header.setStyle(
          "-fx-background-color:linear-gradient(#242424 50%, #2D2D2D 75%, #3C3C3C 100%);");
      header.setPadding(new Insets(3, 1, 3, 1));

      playField = new StackPane(spotView, liveView, slowDownView);
      playField.setAlignment(Pos.TOP_LEFT);
      playField.setStyle(
          "-fx-background-color: linear-gradient(#9d9e9d 5%, #6b6a6b 20%, #343534 80%, #242424 100%);");

      root = new BorderPane(playField, header, null, null, null);
      root.setStyle("-fx-border-color: #13BFF8");

      playScene = new Scene(root, 300, 500);

      newGame = new Button("Start");
      newGame.setStyle(
          "-fx-background-color: linear-gradient(TRANSPARENT 50%, #FFFFFF 100%);  -fx-text-fill: #FFFFFF; -fx-min-width: 128px;");
      newGame.setOnMouseEntered(
          e ->
              newGame.setStyle(
                  "-fx-background-color: linear-gradient(TRANSPARENT 10%, #FFFFFF 100%);  -fx-text-fill: #FFFFFF; -fx-min-width: 128px;"));
      newGame.setOnMouseExited(
          e ->
              newGame.setStyle(
                  "-fx-background-color: linear-gradient(TRANSPARENT 50%, #FFFFFF 100%);  -fx-text-fill: #FFFFFF; -fx-min-width: 128px;"));
      newGame.setTranslateY(80);
      newGame.setOnMouseClicked(
          e -> {
            points = 0;
            time = 1500;
            clicked = false;
            slowDownCount = 0;
            lives.set(1);
            livesText.setText(String.valueOf((int) lives.get()));
            screen.setScene(playScene);
            engine = new Engine(this);
            engine.start();
          });
      menu.getChildren().add(newGame);

      menuScene = new Scene(menu, 256, 256);
      menu.setStyle(
          "-fx-background-color: linear-gradient(#9d9e9d 5%, #6b6a6b 20%, #343534 80%, #242424 100%); -fx-border-color: #13BFF8;");

      primaryStage.setScene(menuScene);
      primaryStage.setResizable(false);
      primaryStage.initStyle(StageStyle.UNDECORATED);
      primaryStage.show();

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  @Override
  public void start(Stage stage) {
    // stage.initStyle(StageStyle.UNDECORATED);
    stage.setTitle("Hello Image Clipboard");
    Scene scene = new Scene(new Group(), 1024, 768);
    scene.setFill(Color.LIGHTGREEN);

    Rectangle overlay = new Rectangle();
    overlay.setWidth(800);
    overlay.setHeight(600);
    overlay.setFill(Color.TRANSPARENT);
    EventHandler<DragEvent> drop = de -> checkBoard(de.getDragboard(), de);

    EventHandler<DragEvent> enter =
        de -> {
          if (de != null && de.getDragboard() != null && de.getDragboard().hasImage()) {
            de.acceptTransferModes(TransferMode.ANY);
          }
        };

    EventHandler<DragEvent> dragged =
        de -> {
          if (de != null && de.getDragboard() != null && de.getDragboard().hasImage()) {
            de.acceptTransferModes(TransferMode.ANY);
          }
        };

    overlay.setOnDragDropped(drop);
    overlay.setOnDragEntered(enter);
    overlay.setOnDragOver(dragged);

    clearBtn = new Button("Clear");
    clearBtn.setTranslateX(50);
    clearBtn.setTranslateY(30);

    copyBtn = new Button("Copy");
    copyBtn.setTranslateX(125);
    copyBtn.setTranslateY(30);

    pasteBtn = new Button("Paste");
    pasteBtn.setTranslateX(200);
    pasteBtn.setTranslateY(30);

    clearBtn.setOnAction(e -> clear());
    copyBtn.setOnAction(
        e -> {
          ClipboardContent content = new ClipboardContent();
          content.putImage(imageView.getImage());
          Clipboard.getSystemClipboard().setContent(content);
        });
    pasteBtn.setOnAction(e -> checkBoard(Clipboard.getSystemClipboard(), null));

    Group root = (Group) scene.getRoot();
    root.getChildren().add(overlay);
    root.getChildren().add(imageView);
    root.getChildren().add(clearBtn);
    root.getChildren().add(copyBtn);
    root.getChildren().add(pasteBtn);

    stage.setScene(scene);
    stage.show();
  }