JavaFX 2 Window.hide在特定时间之后

时间:2014-01-17 11:24:54

标签: java window javafx-2

我想在30秒后(或其他时间)关闭/隐藏窗口 特定的时间)。我尝试了一下这段代码:

Calendar cal = Calendar.getInstance();
cal.getTime().getTime();

但我无法弄清楚如何让它发挥作用。我正在使用JavaFX 2.如何在使用window.hide()隐藏窗口之前指定等待的时间?

2 个答案:

答案 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);