Mari kita lihat rendering terlebih dahulu:
Cukup unggah kode.
Fine-tune tombol dan tambahkan kanvas untuk menggambar beberapa lingkaran, lalu monitor. . .
Paket cn.hncu.threaddemo.thread2; impor java.awt.canvas; impor java.awt.color; import java.awt.graphics; impor listerio.awt.event.actionevent; impor java.awt.acticeListener; impor java.awt.event.event.event.aVent. java.awt.event.focuslistener; impor javax.swing.jframe; import javax.swing.jlabel; impor javax.swing.jpanel; impor javax.swing.jspinner; impor javax.swing.timer; impor javax.swing.event.changeevent; BallsJFrame memperluas JFRame mengimplementasikan ChangeListener {private ballscanvas ball; pemintal JSPINNER pribadi; Public BallsjFrame () {super ("pineball"); this.setbounds (300, 200, 400, 300); this.setDefaultCloseOperation (exit_on_close); Warna warna [] = {color.red, color.green, color.blue, color.magenta, color.cyan}; bola = Ballscanvas baru (warna, 100); this.getContentPane (). Tambah (bola); // default adalah posisi tengah panel jpanel = jpanel baru (); this.getContentPane (). Tambah (panel, "selatan"); Panel.Add (Jlabel baru ("Delay")); spinner = jspinner baru (); spinner.setValue (100); panel.add (pemintal); spinner.addchangeListener (ini); this.setVisible (true); } @Override public void statechanged (gantiEvent e) {int value = integer.parseint (""+spinner.getValue ()); ball.setDelay (nilai); } public static void main (string [] args) {new BallsjFrame (); }} kelas ballscanvas memperluas kanvas mengimplementasikan ActionListener, focusListener {private ball balls []; // penyimpanan semua bola timer private timer; // javax.swing.timer Ballscanvas publik (warna warna [], int delay) {this.balls = new Ball [warna. Length]; untuk (int i = 0, x = 40; i <colors.length; i ++, x+= 20) {this.balls [i] = bola baru (x, x, warna [i]); } // Biarkan kanvas saat ini memantau peristiwa fokus this.addfocuslistener (ini); timer = timer baru (tunda, ini); timer.start (); } public void setDelay (int delay) {timer.setDelay (delay); } @Override public void cat (grafik g) {for (int i = 0; i <this.balls.length; i ++) {g.setColor (bola [i] .color); // Biarkan koordinat setiap bola --- (x koordinat) bola [i] .x = bola [i]. bola [i] .x-10: bola [i] .x+10; // Ketika bola menyentuh dinding, ubah arah bola jika (bola [i] .x <= 0 || bola [i] .x> = this.getWidth ()-24) {bola [i]. Left =! Balls? bola [i] .y-10: bola [i] .y+10; // Ketika bola menyentuh dinding, ubah arah bola jika (bola [i] .y <= 0 || bola [i] .y> = this.getheight ()-22) {bola [i] .up =! Balls [i] .up; // sakelar arah} g.filloval (bola [i] .x, BALLS, I]. }} @Override public void actionPerformed (actionEvent e) {//system.out.println("aaa "); ulang (); // Segarkan kanvas. Call Paint (Graphics G)} @Override public void focusGained (FocusEvent e) {timer.stop (); } @Override public void focuslost (focusEvent e) {timer.restart (); } private static class ball {int x, y; Boolean naik, ke kiri; Warna warna; bola publik (int x, int y, warna warna) {this.x = x; this.y = y; this.color = warna; up = kiri = false; }}}Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.