[JavaFX] Nur alle paar Sekunden auf einen Button klicken können?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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)

Woher ich das weiß:Hobby
verreisterNutzer  07.06.2022, 15:55

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?

1
JanMarcel01  07.06.2022, 15:57
@verreisterNutzer

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);
}
1

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#)

Woher ich das weiß:Berufserfahrung – Software-Entwickler