0
버튼이있는 그리드가 있습니다. 1 - 3 개의 버튼이 그리드에서 무작위로 활성화되고 3 초 후에 활성화되는 버튼을 닫으려고합니다. 타임 라인을 사용하려고했지만 버튼을 하나만 닫았습니다. 어떤 생각?3 초 후에 버튼 닫기 javafx
버튼이있는 그리드가 있습니다. 1 - 3 개의 버튼이 그리드에서 무작위로 활성화되고 3 초 후에 활성화되는 버튼을 닫으려고합니다. 타임 라인을 사용하려고했지만 버튼을 하나만 닫았습니다. 어떤 생각?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();
아마도 더 좋은 (내장 된) 해결책이있을 것입니다.하지만 이것은 제가 사용하는 것입니다.