我想更改随机按钮的颜色,等待1秒钟,然后将其更改回默认值,int for for循环

问题描述 投票:-1回答:1

我想编写一个代码,每次迭代我都会得到一个随机数,并基于该数字将按钮的颜色更改为浅绿色,然后在一秒钟后将其更改为默认值,但是我的问题是for()赢得了不要等到按钮变回原位,它才开始新的迭代。到目前为止,这是我的代码:

for(int i=0; i<n; i++) {
     int x = rand.nextInt(4) + 1;
        switch(x) {
            case 1: {
                System.out.println("b1");
                button1.setStyle("-fx-background-color: lightgreen; -fx-border-color: black;");

                PauseTransition wait = newPauseTransition(Duration.seconds(1));
                wait.setOnFinished(event -> {
                button1.setStyle("");
            });
            wait.play();
        }
        break;
        case 2: {
            System.out.println("b2");
            button2.setStyle("-fx-background-color: lightgreen; -fx-border-color: black;");

            PauseTransition wait = new PauseTransition(Duration.seconds(1));
            wait.setOnFinished(event -> {
                button2.setStyle("");
            });
            wait.play();
        }
        break;
        ...
}

我如何进行这项工作,以使循环不会阻止UI更新?我看到了有关为循环创建新线程的信息,但我似乎无法弄清楚如何执行该操作以及在何处使用Platform.runLater。

java button javafx background-color scenebuilder
1个回答
0
投票
也许以下代码可以满足您的要求。它使用时间轴每秒随机选择一个按钮,并将该按钮设置为绿色,同时重置先前已设置颜色的任何其他按钮。
© www.soinside.com 2019 - 2024. All rights reserved.