Ich versuche zu:seltsamer Fehler - Wie pausiert man ein Java-Programm?
- Anzeige ein Text in einem JLabel,
- warten zwei Sekunden
- dann einen neuen Text in der
JLabel schreiben sollte so einfach sein , aber ich bekomme einen seltsamen Fehler: der erste Text wird nie geschrieben, die Anwendung wartet nur für 2 Sekunden und zeigt dann den endgültigen Text. Hier ist der Beispielcode: "Clicked"
private void testButtonActionPerformed(java.awt.event.ActionEvent evt) {
displayLabel.setText("Clicked!");
// first method with System timer
/*
long t0= System.currentTimeMillis();
long t1= System.currentTimeMillis();
do{
t1 = System.currentTimeMillis();
}
while ((t1 - t0) < (2000));
*/
// second method with thread.sleep()
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {}
displayLabel.setText("STOP");
}
mit diesem Code, der Text wird nie angezeigt. Ich bekomme nur 2 Sekunden - Pause und dann den "STOP" -Text. Ich habe versucht, System-Timer mit einer Schleife oder Thread.sleep() zu verwenden, aber beide Methoden geben das gleiche Ergebnis.
(seufz) Den EDT (Event Dispatch Thread) nicht blockieren. Anstatt 'Thread.sleep (n)' aufzurufen, implementieren Sie einen Swing 'Timer' oder verwenden Sie einen' SwingWorker', um lange laufende Aufgaben auszuführen. Weitere Informationen finden Sie unter [Parallelität in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/). –