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

问题描述

我是 JavaFX 的新手,每当我按下按钮时,我都会尝试,首先,它会在标签上显示一些信息,然后 改变场景。 其实一切都还好,只是我不知道如何在切换场景之前等待特定的时间。

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

<img src={"data:image/jpeg;base64,".concat(`b64_str_img`)} width="512px"></img>

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

我也尝试了一下JavaFX的pause方法,但是没有等待,还是直接跳到另一个场景

    @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);
}

我该如何延迟?

解决方法

您已经向后使用了 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();
}
,

关于您的第一个问题:尝试使用 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");
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...