【问题标题】:Closing buttons after 3 seconds javafx3 秒后关闭按钮 javafx
【发布时间】:2017-10-13 03:10:25
【问题描述】:

我有一个带有按钮的网格。在我的网格中随机激活了 1 到 3 个按钮,我试图在 3 秒后关闭已激活的按钮。 我尝试使用时间线,但它只关闭了 1 个按钮。任何想法 ?

【问题讨论】:

    标签: java button javafx timer


    【解决方案1】:

    “...关闭按钮...”到底是什么意思?

    无论如何,无论这意味着什么,您都可以在一定的延迟后使用一个简单的类来做到这一点,例如:

        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();
    

    可能会有一些更好的(内置)解决方案,但这是我使用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多