我想在30秒后(或其他时间)关闭/隐藏窗口 特定的时间)。我尝试了一下这段代码:
Calendar cal = Calendar.getInstance();
cal.getTime().getTime();
但我无法弄清楚如何让它发挥作用。我正在使用JavaFX 2.如何在使用window.hide()
隐藏窗口之前指定等待的时间?
答案 0 :(得分:5)
使用PauseTransition很简单,因为它可以保留JavaFX应用程序线程中的所有内容,而且您不必担心潜在的线程问题。
如果您使用的是Java 8:
final Window window = new Stage();
. . .
PauseTransition pause = new PauseTransition(Duration.seconds(30));
pause.setOnFinished(e -> window.hide());
pause.play();
或者,如果您使用的是Java 7,请将lambda替换为:
pause.setOnFinished(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
window.hide();
}
});
答案 1 :(得分:1)
您可以使用ScheduledExecutorService来安排活动,但在Java 8+上应该首选其他答案:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(
new Runnable() {
@Override public void run() {
Platform.runLater(new Runnable() {
@OVerride public void run() { stage.hide(); }
})
}
}, 30, TimeUnit.SECONDS);