content: package com.almasb.tutorial5;
  
  import javafx.animation.RotateTransition;
  import javafx.beans.property.SimpleIntegerProperty;
  import javafx.geometry.Pos;
  import javafx.scene.layout.StackPane;
  import javafx.scene.paint.Color;
  import javafx.scene.shape.Rectangle;
  import javafx.scene.text.Text;
  import javafx.util.Duration;
  
  public class Dice extends StackPane {
  
      public static final int MAX_VALUE = 6;
      public static final int MIN_VALUE = 1;
  
      public final SimpleIntegerProperty valueProperty = new SimpleIntegerProperty();
  
      public Dice() {
          Rectangle rect = new Rectangle(50, 50);
  
          Text text = new Text();
          text.setFill(Color.WHITE);
          text.textProperty().bind(valueProperty.asString());
  
          this.setAlignment(Pos.CENTER);
          getChildren().addAll(rect, text);
  
          this.setOnMouseClicked(event -> roll());
      }
  
      public void roll() {
          RotateTransition rt = new RotateTransition(Duration.seconds(1), this);
          rt.setFromAngle(0);
          rt.setToAngle(360);
          rt.setOnFinished(event -> {
              valueProperty.set((int)(Math.random() * (MAX_VALUE - MIN_VALUE + 1)) + MIN_VALUE);
          });
          rt.play();
      }
  }
  