2017-10-13 68 views
0

我有一個帶按鈕的網格。 1到3個按鈕在我的網格中隨機激活,我試圖關閉3秒後激活的按鈕。 我嘗試使用時間線,但它只關閉1個按鈕。任何想法 ?3秒後關閉按鈕javafx

回答

0

「...關閉按鈕...」是什麼意思?

無論如何,不​​管它意味着你可以使用一個簡單的類如某些延遲之後做到這一點:

private class DelayedTrigger extends Task<Void> { 

    private final long delay; 
    private Runnable onTriggered; 

    public DelayedTrigger(long delay, Runnable onTriggered) { 
     this.delay = delay; 
     this.onTriggered = onTriggered; 
    } 

    @Override 
    protected Void call() throws Exception { 
     try { 
      Thread.sleep(delay); 
     } catch (Exception e) { 
     } 
     return null; 
    } 

    @Override 
    protected void succeeded() { 
     if (onTriggered != null) { 
      onTriggered.run(); 
     } 
    } 

然後,當你的按鈕被「激活」,你只是:

DelayedTrigger activeTrigger = new DelayedTrigger(3000,() -> myActivatedButton.close()); 
    new Thread(activeTrigger).start(); 

而且如果您稍後改變主意(例如因爲某些事件在2秒後到來),仍然可以通過以下方式取消觸發器:

activeTrigger.cancel(); 

可能會有一些更好的(內置)解決方案,但這是我使用的。