Ejemplo n.º 1
0
  public void setLyrics() throws IOException {

    lyrStage = new Stage();
    lyrStage.setTitle("Lyrics setting");
    lyrStage.setHeight(420);
    AnchorPane root = new AnchorPane();
    root.setStyle(
        "-fx-border-color: black, transparent; -fx-border-width: 1px, 5px; -fx-border-insets: 0px, 1px");

    root.setOnMouseDragged(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent me) {
            lyrStage.setX(me.getScreenX());
            lyrStage.setY(me.getScreenY());
          }
        });

    lyrStage.initStyle(StageStyle.UNDECORATED);
    Scene scene = new Scene(root);

    final TextArea lyricArea = new TextArea();

    lyrStage.setScene(scene);

    lyricArea.setPrefHeight(100);
    lyricArea.setPrefWidth(190);
    lyricArea.setMinHeight(100);
    lyricArea.setLayoutY(315);
    lyricArea.setLayoutX(7);
    lyricArea.setMaxWidth(TextField.USE_PREF_SIZE);

    final Label label = new Label();
    /*
            final ScrollPane sp = new ScrollPane();
            sp.setPrefSize(200, 200);
            sp.setHbarPolicy(ScrollBarPolicy.AS_NEEDED);
            sp.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
            sp.setPannable(true);
            sp.setContent(label);
            sp.vvalueProperty().addListener(new ChangeListener<Number>() {
                @Override
                public void changed(ObservableValue<? extends Number> ov,
                    Number old_val, Number new_val) {
                        label.setLayoutY(-new_val.doubleValue());
                        label.setLayoutX(-new_val.doubleValue());
                }
            });
    */

    label
        .textProperty()
        .bind(
            new StringBinding() {
              {
                bind(lyricArea.textProperty());
              }

              @Override
              protected String computeValue() {

                String text = lyricArea.getText();

                return "Lyric preview: \n\n " + songName + "\n\n" + text;
              }
            });

    final VBox vBox = new VBox();
    vBox.setPrefHeight(800); // ////////////////////////////////////////
    vBox.setPrefWidth(240);
    vBox.setPadding(new Insets(18));
    vBox.getChildren().addAll(label);

    final VBox vBox2 = new VBox();
    vBox2.setPrefHeight(340);
    vBox2.setPrefWidth(240);
    vBox2.setAlignment(Pos.BOTTOM_RIGHT);

    Button btnText = new Button();
    btnText.setText("Ok");
    btnText.setStyle("-fx-base: white;");
    btnText.setOnAction(
        new EventHandler<ActionEvent>() {

          @Override
          public void handle(ActionEvent event) {
            String txt = lyricArea.getText();
            textSet(txt);
            lyrStage.close();
          }
        });

    vBox2.getChildren().add(btnText);

    ScrollBar sc = new ScrollBar();
    sc.setMin(0);
    sc.setMax(500);
    sc.setValue(30);
    sc.setPrefWidth(3);
    sc.setPrefHeight(160);
    sc.setVisibleAmount(10);
    sc.setOrientation(Orientation.VERTICAL);

    sc.valueProperty()
        .addListener(
            new ChangeListener<Number>() {
              @Override
              public void changed(
                  ObservableValue<? extends Number> ov, Number old_val, Number new_val) {
                label.setLayoutY(-new_val.doubleValue());
              }
            });

    root.getChildren().addAll(vBox, lyricArea, vBox2, sc);

    lyrStage.setX(50);
    lyrStage.setY(50);

    lyrStage.show();
  }