0
我有一個帶按鈕的網格。 1到3個按鈕在我的網格中隨機激活,我試圖關閉3秒後激活的按鈕。 我嘗試使用時間線,但它只關閉1個按鈕。任何想法 ?3秒後關閉按鈕javafx
我有一個帶按鈕的網格。 1到3個按鈕在我的網格中隨機激活,我試圖關閉3秒後激活的按鈕。 我嘗試使用時間線,但它只關閉1個按鈕。任何想法 ?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();
可能會有一些更好的(內置)解決方案,但這是我使用的。