JavaFX - 如何在特定时间更改背景颜色?

时间:2018-03-19 18:35:43

标签: java multithreading javafx background-color

我有一个文字和一个输入字段。如果输入对于文本是正确的,则输入字段的背景应更改为绿色。 然后程序应停止1秒(并显示输入)然后它应生成一个带有random()的新文本,并将颜色更改回白色。

input.setOnKeyPressed(e -> {
        if (e.getCode() == KeyCode.ENTER) {
            if(value.equals(input.getText())){
                input.setStyle("-fx-background-color: green");
                System.out.println("right!");

                // now it should wait 1 second
                // and display only the input & green background
                try{ Thread.sleep(1000);
                } catch(InterruptedException i){
                   throw new Error("interrupted");
                }

                // random changes the Text and the input will reset
                random(); 
                input.setText("");
                input.setStyle("-fx-background-color: white");
            }
            else{
                System.out.println("false");
            }
        }
      });

但问题是,背景永远不会变为绿色。这一秒钟它只显示我的输入。然后我得到一个新文本,我的背景变为白色。

您有什么想法如何更改此时的背景颜色? 谢谢你的回答!

修改

它适用于 PauseTransition 而不是Thread,所以:

PauseTransition wait = new PauseTransition(Duration.seconds(1));
                wait.setOnFinished(event -> {
                    random();
                    input.setStyle("-fx-background-color: white");
                    input.setText("");
                });
                wait.play();

0 个答案:

没有答案