java thread in actionlistener?

... komplette Frage anzeigen

1 Antwort

Als Reaktion auf den Code, den du in der anderen Antwort gepostet hast:

Lösche die Funktion "start" und benenne "ausführen" in "run" um. Ein Thread funktioniert so, dass er mit start() gestartet wird. Das findet noch im aufrufenden Thread statt. Die Funktion run() ist die, die nebenläufig ausgeführt wird.

Wenn du in Swing mit zusätzlichen Threads arbeitest, musst du immer bedenken, dass Swing nicht Thread-safe ist. Jede Modifikation der UI muss auf dem EventThread geschehen.

In der Klasse SwingUtilities gibt es eine Funktion namens "invokeLater" - dieser übergibst du ein Runnable, was dann bei nächster Gelegenheit vom EventThread aus aufgerufen wird.

Ersetze die Zeile

lblAusgabe.setText(Integer.toString(zahl) + " Sekunden.");

durch

SwingUtilities.invokeLater( () -> lblAusgabe.setText(Integer.toString(zahl) + " Sekunden.") );


Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?