首先咱們要在一個窗口裏面顯示這個功能,所以引入JFrame類而後建立一個窗口代碼以下:java
JFrame win=new JFrame();//新建窗口 win.setLocation(250,100);//設置窗口位置 win.setSize(800,600);//設置窗口大小 win.show();//顯示窗口 win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置關閉退出
顯示以下:
要實現這個功能作基礎的就是要有一個小球,就像人吃飯這句話,少了人這個主角,說什麼都是白說。世間全部事物都是對象,具備屬性和操做,沒有對象就沒有一切。就下來咱們就來生成一個小球,這裏用到Panel類,建立一個MyPanel類繼承於Panel類而後建立一個畫畫方法。代碼以下:ide
class MyPanel extends Panel{ public void paint(Graphics g) { g.setColor(Color.yellow); g.fillOval(100, 40, 80, 80); } }
建立一個對象my,添加進win窗口裏。代碼以下:線程
MyPanel my=new MyPanel(); win.add(my);
效果以下:
3d
接下來就是讓這個小球動起來,咱們讓這個小球向右移動,咱們用線程和異常來實現。代碼以下:code
1.Thread t=new Thread(my);//新建線程 t.start();//開始線程 2.implements Runnable 3.public void run() {//運行方法 while(true){ repaint();//從新畫圓 try { Thread.sleep(10);十毫秒運行一次 } catch(Exception e) { } } } 4.g.fillOval(x++, 40, 80, 80);//修改每次的橫座標
效果
一步一步來,接下來咱們要實現的目標就是讓小球碰到邊界能夠反向走s。
核心代碼:對象
[java] view plain copy int fly=1; [java] view plain copy if (fly==1) { x++; } if(fly ==2) { x--; } if(x>720) { fly=2; y=y+70; } if(x<0) { fly=1; y=y+70; }
效果
好裝備的差很少了,下面就開始實現完整功能了。
效果以下:
完整代碼:blog
[java] view plain copy package Ball; import java.awt.Color; import java.awt.Graphics; import java.awt.Panel; import javax.swing.JFrame; public class Ball { public static void main(String[] args) { // TODO Auto-generated method stub JFrame win=new JFrame();//新建窗口 win.setLocation(250,100);//設置窗口位置 win.setSize(800,600);//設置窗口大小 win.show();//顯示窗口 win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置關閉退出 MyPanel my=new MyPanel(); win.add(my); Thread t=new Thread(my); t.start(); } } class MyPanel extends Panel implements Runnable{ int x=0,y=0; int flyx=1,flyy=1; public void paint(Graphics g) { g.setColor(Color.yellow); g.fillOval(x, y, 70, 70); // System.out.println("23"); if (flyx==1) { x++; } if(flyx ==2) { x--; } if(flyy==1) { y++; } if(flyy==2) { y--; } if(x>730) { flyx=2; } if(x<0) { flyx=1; } if(y<0) { flyy=1; } if(y>530) { flyy=2; } } public void run() { while(true){ repaint(); try { Thread.sleep(10); } catch(Exception e) { } } } }
第一次寫博客,寫的不夠詳細,或者有錯的地方歡迎你們的添加和指正,你們一塊兒交流,我是個初學者,但願不要介意。繼承