Schauen wir uns zuerst die Renderings an:
Laden Sie einfach den Code hoch.
Füllen Sie die Taste fein und fügen Sie die Leinwand hinzu, um ein paar Kreise zu zeichnen, und überwachen Sie sie dann. . .
Paket cn.Hncu.Threaddemo.Thread2; Import Java.awt.canvas; Import Java.awt.Color; Import Java.awt.graphics; Import Java.awt.event.ActionEvent; Import Java.awt.event.ActionListener; Importe Java.awt.event.focusevent; java.awt.event.focusListener; import Javax.swing.jframe; import Javax.swing.jlabel; Import Javax.swing.jpanel; Import Javax.swing.jspinner; Import Javax.Swing.timer; Ballsjframe erweitert JFrame implementiert Changelistener (Private Ballscanvas Ball; Privat Jspinnner Spinner; public ballsjframe () {super ("pineball"); this.Setbounds (300, 200, 400, 300); this.setDefaultCloseOperation (exit_on_close); Farbfarben [] = {color.red, color.green, color.blue, color.magenta, color.cyan}; Ball = neue Ballscanvas (Farben, 100); this.getContentPane (). add (Ball); // Standard ist die mittlere Position JPanel Panel = new Jpanel (); this.getContentPane (). Add (Panel, "South"); panel.Add (New Jlabel ("Delay")); Spinner = new Jspinnner (); Spinner.SetValue (100); panel.Add (Spinner); Spinner.Addchangelistener (dies); this.setvisible (true); } @Override public void staitechanged (Changeevent e) {int value = integer.parseInt (""+spinner.getValue ()); ball.setDelay (Wert); } public static void main (String [] args) {new ballsjframe (); }} Klasse Ballscanvas erweitert Canvas implementiert ActionListener, FocusListener {private Ballbälle []; // Speicher aller Bälle Private Timer Timer; // javax.swing.timer public ballscanvas (Farbfarben [], int Verzögerung) {this.balls = neuer Ball [Farben [Farben); für (int i = 0, x = 40; i <farben.length; i ++, x+= 20) {this.balls [i] = neuer Ball (x, x, farben [i]); } // den aktuellen Canvas das Fokusereignis dieses.addfocusListener (dies) überwachen; Timer = neuer Timer (Verzögerung, dies); Timer.Start (); } public void setDelay (int delay) {timer.setDelay (delay); } @Override public void Paint (Grafik g) {für (int i = 0; i <this.balls.length; i ++) {g.setColor (Bälle [i] .Color); // die Koordinaten jedes Balls --- (x Koordinaten) Bälle [i] .x = Bälle [i] .left? Bälle [i] .x-10: Bälle [i] .x+10; // Wenn der Ball eine Wand trifft, ändern Sie die Richtung des Balls, wenn (Bälle [i] .x <= 0 || Bälle [i] .x> = this.getwidth ()-24) {Bälle [i] .left =! Bälle [i] .y-10: Bälle [i] .y+10; // Wenn der Ball eine Mauer trifft, ändern Sie die Richtung des Balls, wenn (Bälle [i] .y <= 0 || Bälle [i] .y> = this.getheight ()-22) {Bälle [i] .up =! Bälle [i] .up; // Richtung} g.filloval (Bälle [i] .x, Bälle, Bälle, 20, 20); }} @Override public void actionperformed (actionEvent e) {//system.out.println("aaaa "); Repaint (); // Die Leinwand aktualisieren. Call Paint (Graphics g)} @Override public void focusgained (focusevent e) {timer.stop (); } @Override public void FocusLost (focusevent e) {timer.restart (); } private statische Klassenball {int x, y; boolean up, links; Farbfarbe; public ball (int x, int y, Farbe Farbe) {this.x = x; this.y = y; this.color = color; up = links = false; }}}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.