3秒后关闭按钮javafx
答
“...关闭按钮...”是什么意思?
无论如何,不管它意味着你可以使用一个简单的类如某些延迟之后做到这一点:
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();
可能会有一些更好的(内置)解决方案,但这是我使用的。