关闭按钮3秒后javafx

时间:2017-10-13 03:10:26

标签: java button javafx timer

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

1 个答案:

答案 0 :(得分: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();
        }
    }

然后,当您的按钮被激活&#34;时,您只需:

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

如果您稍后改变主意(例如因为某事件在2秒后发生),您仍然可以通过调用取消触发器:

    activeTrigger.cancel();

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