Ändern Sie dynamisch die Farbe eines Rechtecks ​​in Javafx

Ich erschaffe eine Zweijavafx.scene.shape.Rectangle Objekte in einerGridPane und das Folgende tun.

rectArray = new Rectangle[2];

boardGrid.setStyle("-fx-background-color: #C0C0C0;");

rectArray[0] = new Rectangle(12,12);
rectArray[0].setFill(Color.AQUA);
boardGrid.add(rectArray[0], 2, 0);

rectArray[1] = new Rectangle(12,12);
rectArray[1].setFill(Color.BLACK);
boardGrid.add(rectArray[1], 2, 1);       

Button buttonStart = new Button("Change color");
buttonStart.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
       @Override
       public void handle(MouseEvent event) {
          rectArray[0].setFill(Color.RED);
          try {
               Thread.sleep(2000);
          } 
          catch (InterruptedException e) {
               e.printStackTrace();
          }
          rectArray[1].setFill(Color.AZURE);
       }
});
boardGrid.add(buttonStart, 3, 1);
initializeScene(primaryStage, boardGrid);
...

Wenn ich den Code ausführe, sehe ich zwei Rechtecke (eines in Aqua und eines in Schwarz). Wenn ich auf die Schaltfläche klicke, muss ich 2 Sekunden warten, um die Farbänderung beider Rechtecke zu sehen.

Ich ändere vorher die Farbe eines RechtecksThread.sleep(2000) wird aufgerufen und dann ändere ich die Farbe des nächsten Rechtecks.

Meine Frage ist, warum soll ich 2 Sekunden warten? Gibt es eine Möglichkeit, die Farben des Rechtecks ​​dynamisch zu aktualisieren?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage