Java Reference
In-Depth Information
In der Endlosschleife wird geprüft, ob der rechte oder linke Rand des Panels erreicht
wurde. Je nachdem wird dann die Bewegungsrichtung umgestellt. Je nach Bewegungs-
richtung wird dann die x-Koordinate um 2 Pixel erhöht oder verringert. Zur Steuerung
der Geschwindigkeit wird der Thread dann für 20 Millisekunden angehalten. Nicht bei
allen Werten ergeben sich flüssige Bewegungsabläufe. Sie sollten mit diesen Werten
durchaus etwas experimentieren und sich die Auswirkungen ansehen.
Das JBallPanel können Sie jetzt in einem Programm-Frame einsetzen. Erstellen Sie
einen Frame Ballanimation , und fügen Sie ein Panel ( jPanel1 ) und die beiden Buttons
( jBtnStart und jBtnStop ) in den Frame ein. Im Quellcode ersetzen Sie dann überall den
Bezeichner JPanel durch JBallPanel . Sie ergänzen noch die beiden ActionListener für
die Buttons und ergänzen dort den Quellcode zum Starten und Anhalten des Threads:
private void jBtnStartActionPerformed(ActionEvent evt) {
t=new Thread(jPanel1);
t.start();
}
14
private void jBtnStopActionPerformed(ActionEvent evt) {
t.interrupt();
}
Listing 14.14 Starten und Anhalten des Animationsthreads
Sie können nun die Animation starten und anhalten und ausgiebig testen. Sie sollten
den Programm-Frame auch einmal schließen, während die Animation läuft. Achten Sie
dabei auf die Ansicht Console. Normalerweise erscheint dort der Hinweis termina-
ted, und die Schaltfläche Stop geht von rot in den gegrauten Zustand über. Das Pro-
grammfenster ist zwar geschlossen, aber das reicht offensichtlich nicht aus, um auch
den Thread zu beenden. Wenn Sie keinen eigenen Button zum Beenden des Programms
vorsehen wollen, dann können Sie die erforderlichen Aufräumarbeiten so hinterlegen,
dass sie beim Schließen des Frames abgearbeitet werden.
Markieren Sie dazu den Frame in der Ansicht Outline oder in der Vorschauansicht,
damit die GUI Properties die Eigenschaften des Frames zeigen. Erstellen Sie unter Win-
dowListener einen Listener für windowClosed . In der erstellten Methode ergänzen Sie
dann noch das Unterbrechen des Threads.
Search WWH ::




Custom Search