Java Reference
In-Depth Information
Java stellt Ihnen für diesen Zweck die Methode
sleep
der Klasse
Thread
zur Verfügung.
Und schon nehmen wir den ersten Kontakt mit der Klasse
Thread
auf. Die Methode
erwartet als Parameterwert eine ganze Zahl. Mit diesem Zahlenwert geben Sie der
Methode an, wie viele Millisekunden die Unterbrechung dauern soll. Sie können sich
bei dieser Zeitangabe aber nicht darauf verlassen, dass sie exakt eingehalten wird.
Betrachten Sie den Wert eher als Richtwert. Der Name der Methode deutet schon darauf
hin, dass sie den Programmablauf gewissermaßen in einen Schlafzustand versetzt.
Genaugenommen versetzt sie aber nur einen Thread in diesen Zustand. Besteht Ihr Pro-
gramm nur aus einem einzigen durch
main
gestarteten Thread, dann ist auch Ihr gesam-
ter Programmablauf in den Wartezustand versetzt.
Sind mehrere Threads im Spiel, dann können diese sich gegenseitig auch unterbrechen.
Der unterbrochene Thread wirft dann eine
InterruptedException
. Setzen Sie Threads
ein, und sei es nur, um die Methode
sleep
zu verwenden, wird Eclipse Sie aus diesem
Grund darauf aufmerksam machen, dass Sie auf diese Interrupts in irgendeiner Weise
reagieren müssen.
Nach diesen Erläuterungen können Sie einen ersten Versuch unternehmen und einen
ActionListener
für die Checkbox nach Muster von
Listing 14.3
erstellen. Als zeitliche
Richtwerte wurden der Eigenschaftsliste des Frames folgende Definitionen hinzuge-
fügt:
private int rotPhase = 3000;
private int rotgelbPhase = 500;
private int gruenPhase = 3000;
private int gelbPhase = 500;
Damit ein Durchlauf nicht zu lange dauert, wurden für die Rot- und Grünphasen
3 Sekunden und für die beiden Übergangsphasen eine halbe Sekunde festgelegt.
Über die CheckBox
jCBAutomatik
kann der Automatikmodus ein- bzw. ausgeschaltet
werden. Das folgende Listing erläutert, welche Aktionen beim Umschalten ausgelöst
werden:
private void jCBAutomatikActionPerformed(ActionEvent evt) {
if (jCBAutomatik.isSelected()) {
jRBtnRot.setEnabled(false);
jRBtnRotGelb.setEnabled(false);
jRBtnGruen.setEnabled(false);
jRBtnGelb.setEnabled(false);
jRBtnAus.setEnabled(false);
while (jCBAutomatik.isSelected()) {