【发布时间】:2017-10-13 03:10:25
【问题描述】:
我有一个带有按钮的网格。在我的网格中随机激活了 1 到 3 个按钮,我试图在 3 秒后关闭已激活的按钮。 我尝试使用时间线,但它只关闭了 1 个按钮。任何想法 ?
【问题讨论】:
我有一个带有按钮的网格。在我的网格中随机激活了 1 到 3 个按钮,我试图在 3 秒后关闭已激活的按钮。 我尝试使用时间线,但它只关闭了 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();
可能会有一些更好的(内置)解决方案,但这是我使用的。
【讨论】: