Je crée deux objets javafx.scene.shape.Rectangle
dans un GridPane
en procédant comme suit.Modifier dynamiquement la couleur d'un rectangle dans Javafx
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);
...
Quand je lance le code que je suis capable de voir deux rectangles (un dans Aqua et un en noir) et quand je clique sur le bouton, je vais devoir attendre les 2 secondes pour voir le changement de couleurs des deux rectangles.
Je change la couleur d'un rectangle avant d'appeler Thread.sleep(2000)
puis je change la couleur du rectangle suivant.
Ma question est pourquoi suis-je censé attendre 2 secondes? Existe-t-il un moyen de mettre à jour dynamiquement les couleurs du rectangle?