Ich muss ein Programm schreiben, das einen Swing-Countdown-Timer verwendet, um etwas zu tun (in diesem Fall, drucken Sie eine Zeichenfolge in der Konsole). Es erhält die benötigten Verzögerungsinformationen von einem Spinner und führt den Code aus, wenn ich den Startknopf drücke. Wenn ich jedoch einen Wert in den Kreisel einfüge, wartet es nur zweimal so viele Sekunden und beendet den Lauf, ohne etwas auszudrucken.Java Swing-Timer macht nicht das, was ich will
private void StartActionPerformed(java.awt.event.ActionEvent evt) {
int x = (int) Spinner1.getValue() * 1000;
Timer TIMER = new Timer(x, new MyActionListener());
TIMER.start();
try {
Thread.sleep(x * 2);
} catch (InterruptedException e) {
}
TIMER.stop();
}
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Something");
}
}
Jede Hilfe würde sehr geschätzt werden!
Für bessere und schnellere Hilfe, stellen Sie eine [MCVE] – STaefi
Verwenden Sie eine logische und konsistente Form der Einrückung Code Zeilen und Blöcke. Die Einrückung soll den Codefluss leichter nachvollziehen lassen! –
Was ist der Unsinn mit 'Thread.sleep (x * 2); –