Работа с gui - Java

Узнай цену своей работы

Формулировка задачи:

есть, допустим, несколько кнопок, я хочу по очереди заменить им цвета, как это сделать, Thread.sleep не принес результата, так как сначала ожидаются все слипы, а потом, все равно, одновременно меняется цвет у всех кнопок

Решение задачи: «Работа с gui»

textual
Листинг программы
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
 
public class Cube extends Application {
 
    private boolean stop = false;
    private int q = 0;
 
    @Override
    public void start(Stage primaryStage) throws Exception {
        Button buttons[] = new Button[3];
        for (int i = 0; i < 3; i++) {
            buttons[i] = new Button(String.valueOf(i));
            buttons[i].setPrefSize(100, 100);
        }
 
        new Thread(() -> {
            while (!stop) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                }
                Platform.runLater(() ->
                        buttons[q++].setStyle("-fx-background-color: #" + ((int) (Math.random() * 10)) + ((int) (Math.random() * 10)) + ((int) (Math.random() * 10)))
                );
                if (q >= 3) q = 0;
            }
        }).start();
 
        primaryStage.setScene(new Scene(new HBox(20, buttons)));
        primaryStage.show();
    }
 
    @Override
    public void stop() throws Exception {
        stop = true;
        super.stop();
    }
}

Оцени полезность:

15   голосов , оценка 4.067 из 5