มาดูการเรนเดอร์ก่อน:
เพียงอัปโหลดรหัส
ปรับปุ่มและเพิ่มผืนผ้าใบเพื่อวาดวงกลมสองสามวงแล้วตรวจสอบ - -
แพ็คเกจ cn.hncu.threaddemo.thread2; นำเข้า java.awt.canvas; นำเข้า java.awt.color; นำเข้า java.awt.graphics; นำเข้า java.awt.event.actionevent; นำเข้า java.awt.event.acport java.awt.event.focuslistener; นำเข้า javax.swing.jframe; นำเข้า Javax.swing.jlabel; นำเข้า Javax.swing.jpanel; นำเข้า Javax.swing.jspinner; นำเข้า Javax.swing.timer; Ballsjframe ขยาย JFrame ใช้ changelistener {Ballscanvas Ball; สปินเนอร์ Jspinner ส่วนตัว; Public BallsjFrame () {super ("Pineball"); this.setbounds (300, 200, 400, 300); this.setDefaultCloseOperation (exit_on_close); สีสี [] = {color.red, color.green, color.blue, color.magenta, color.cyan}; Ball = ใหม่ ballscanvas (สี, 100); this.getContentPane (). เพิ่ม (บอล); // ค่าเริ่มต้นคือตำแหน่งศูนย์ JPanel Panel = new JPanel (); this.getContentPane (). เพิ่ม (แผง, "ใต้"); Panel.Add (ใหม่ JLabel ("ล่าช้า")); Spinner = new jspinner (); Spinner.setValue (100); Panel.Add (Spinner); Spinner.addchangelistener (นี่); this.setVisible (จริง); } @Override โมฆะสาธารณะ stateChanged (changeEvent e) {ค่า int = integer.parseInt (""+spinner.getValue ()); ball.setDelay (ค่า); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ใหม่ ballsjframe (); }} คลาส Ballscanvas ขยาย Canvas ใช้ ActionListener, FocusListener {ลูกบอลส่วนตัว []; // การจัดเก็บลูกบอลตัวจับเวลาส่วนตัวทั้งหมด; // javax.swing.timer public ballscanvas (สีสี [] สำหรับ (int i = 0, x = 40; i <colours.length; i ++, x+= 20) {this.balls [i] = ลูกใหม่ (x, x, สี [i]); } // ปล่อยให้ผืนผ้าใบปัจจุบันตรวจสอบเหตุการณ์โฟกัส this.addFocusListener (นี่); ตัวจับเวลา = ตัวจับเวลาใหม่ (ล่าช้าสิ่งนี้); timer.start (); } โมฆะสาธารณะ setDelay (int delay) {timer.setDelay (ล่าช้า); } @Override Public Void Paint (กราฟิก g) {สำหรับ (int i = 0; i <this.balls.length; i ++) {g.setColor (ลูก [i] .color); // ให้พิกัดของลูกบอลแต่ละลูก --- (พิกัด x) ลูก [i] .x = ลูก [i]. Left? ลูกบอล [i] .x-10: ลูก [i] .x+10; // เมื่อลูกบอลกระทบกับผนังให้เปลี่ยนทิศทางของลูกบอลถ้า (บอล [i] .x <= 0 || ลูก [i] .x> = this.getWidth ()-24) {บอล [i] .left =! บอล [i]. ลูกบอล [i] .y-10: ลูก [i] .y+10; // เมื่อลูกบอลกระทบกับผนังให้เปลี่ยนทิศทางของลูกบอลถ้า (บอล [i] .y <= 0 || ลูก [i] .y> = this.getheight ()-22) {บอล [i] .Up =! ลูก [i] .UP; // สวิตช์ทิศทาง }} @Override โมฆะสาธารณะ ActionPerformed (ActionEvent E) {//system.out.println("aaa "); repaint (); // รีเฟรชผืนผ้าใบ CALL PAINT (กราฟิก g)} @Override โมฆะสาธารณะโฟกัสโฟกัส (FocusEvent E) {timer.stop (); } @Override โมฆะสาธารณะโฟกัส (โฟกัส e) {timer.restart (); } บอลคลาสคงที่ส่วนตัว {int x, y; บูลีนขึ้น, ซ้าย; สีสี; ลูกบอลสาธารณะ (int x, int y, สีสี) {this.x = x; this.y = y; this.color = color; up = ซ้าย = false; -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น