2014-01-17 40 views
2

我想在30秒後關閉/隱藏窗口(或其他 特定時間)。我試了一下這個代碼:JavaFX 2 Window.hide特定時間後

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

但我真的不知道如何讓它工作。我正在使用JavaFX 2.如何在隱藏窗口之前指定需要等待的時間量爲window.hide()

回答

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中,請用拉姆達:

pause.setOnFinished(new EventHandler<ActionEvent>() { 
    @Override 
    public void handle(ActionEvent event) { 
     window.hide(); 
    } 
}); 
+0

謝謝,這工作正常:) – Kaito

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); 
+0

請使用'Platform.runLater()'來執行它在GUI線程上。 –

+1

@ Eng.Fouad Yup謝謝。 – assylias