Для каждого Button
, который вы создаете, вам нужно создать PauseTransition
с продолжительностью полсекунды, который вернет фон к исходному. Когда вы нажимаете Button
, вы меняете фон на серый и перезагружаете PauseTransition
. Это сделает так, чтобы фон перевернулся через полсекунды после последнего щелчка. Вот небольшой пример:
import java.util.Random;
import javafx.animation.Animation.Status;
import javafx.animation.PauseTransition;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
GridPane root = new GridPane();
root.setAlignment(Pos.CENTER);
root.setHgap(10);
root.setVgap(10);
root.setPadding(new Insets(10));
fillGrid(root);
primaryStage.setScene(new Scene(root, 500, 300));
primaryStage.show();
}
private static void fillGrid(GridPane grid) {
Background[] backgrounds = {
new Background(new BackgroundFill(Color.DARKORCHID, null, null)),
new Background(new BackgroundFill(Color.SALMON, null, null)),
new Background(new BackgroundFill(Color.SPRINGGREEN, null, null)),
new Background(new BackgroundFill(Color.GOLD, null, null))
};
Background greyBg = new Background(new BackgroundFill(Color.GREY, null, null));
Random rand = new Random();
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
Background original = backgrounds[rand.nextInt(backgrounds.length)];
Button button = new Button(String.format("(%d,%d)", i, j));
button.setBackground(original);
PauseTransition transition = new PauseTransition(Duration.seconds(0.5));
transition.setOnFinished(event -> button.setBackground(original));
button.setOnMouseClicked(event -> {
event.consume();
button.setBackground(greyBg);
transition.playFromStart();
});
grid.add(button, j, i);
}
}
}
}