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();
}
我是 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();
}