2017-10-13 23 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(); 

おそらくもっと良い(組み込みの)ソリューションがありますが、これは私が使用しているものです。

関連する問題