[JavaFX] Nur alle paar Sekunden auf einen Button klicken können?
Client A klickt auf den ButtonXY und es wird der Sound warnClip abgespielt. Jedoch graut der ButtonXY nach dem Klicken aus und kann erst wieder in 5 Sekunden angeklickt werden. Bedeutet: Nur wenn der Button verfügbar ist, kann der Sound auch abgespielt werden.
>> Eigentlich möchte ich nur verhindern, dass der Sound gespammt wird ;)
Methode:
public void testTyped(IrgendeinEvent e) {
...
warnClip = new AudioClip(Objects.requireNonNull(getClass().getResource("/sounds/warning.wav")).toExternalForm());
warnClip.play();
...
}
2 Antworten
Hey,
das hier wäre meine erste Idee dafür:
public void playSound() {
// play sound
myButton.setDisable(true);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
myButton.setDisable(false);
}
}, 5000); // Ausführung nach 5000 Millisekunden
}
Mfg Jannick (L1nd)
Wenn der Button nicht deaktiviert werden soll, kannst du ja ganz einfach mit einem boolean arbeiten:
private boolean soundIsPlaying;
public void playSound() {
if (soundIsPlaying) return;
// play sound
soundIsPlaying = true;
new Timer().schedule(new TimerTask() {
@Override
public void run() {
soundIsPlaying = false;
}
}, 5000);
}
Wenn es nur um das Sperren des Sounds selber geht, kannst du auch eine persistente Variable nehmen, die den Zeitpunkt des letzten Abspielens des Sounds enthält, und den Sound nur abspielen, wenn dieser Zeitpunkt lange genug zurück liegt.
(Initialisierung mit null, minValue oder now() - interval; siehe auch https://stackoverflow.com/questions/4006186/java-equivalent-of-net-datetime-minvalue-datetime-today#)
Wie würde das denn aussehen, wenn der ButtonXY nicht deaktiviert ist, aber dass wenn man den ButtonXY spammt, dass der Sound nur alle 5 Sekunden abgespielt wird?