ActionEvent 中的 JavaFX Thread.Sleep() 或 pause()

JavaFX Thread.Sleep() or pause() in ActionEvent

我是 JavaFX 的新手,每当我按下按钮时我都会尝试,首先,它会在标签上显示一些信息,然后换个场景。 其实一切都好,就是找不到怎么等到特定的时间再换场景。

我试过 Thread.sleep() 是这样的:(它等待正确,但不知何故它不会改变标签的文本)

    @FXML
public void pressButton(ActionEvent event) throws IOException, InterruptedException {
    user = new User(inUsername.getText(),inPassword.getText());
    lLeftBottom.setText(user.getUserInfo());
    Thread.sleep(2000);
    changeScene2(event);
}

(编辑,感谢 Slaw 解决了 pause() 的 actionEvent 问题)

我也尝试了JavaFX的暂停方法,但是它不等待,仍然立即跳转到另一个场景

    @FXML
public void pressButton(ActionEvent event) throws IOException, InterruptedException {
    user = new User(inUsername.getText(),inPassword.getText());
    PauseTransition pause = new PauseTransition(Duration.seconds(3));
    pause.setOnFinished(e ->{
        lLeftBottom.setText(user.getUserInfo());
    });
    pause.play();
    changeScene2(event);
}

我该如何延迟?

关于你的第一个问题:尝试使用 try catch。对我有用。

public static void main(String[] args) {
    System.out.println("test1");
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("test2");
}

您反向使用了 PauseTransition。如果您想在暂停后更改场景,那是需要在您的 onFinished 事件处理程序中的部分:

@FXML
public void pressButton(ActionEvent event) throws IOException, InterruptedException {
    user = new User(inUsername.getText(),inPassword.getText());
    PauseTransition pause = new PauseTransition(Duration.seconds(3));
    pause.setOnFinished(e ->{
        changeScene2(event);
    });
    lLeftBottom.setText(user.getUserInfo());
    pause.play();
}