封裝方法繪制4個方向,分敵我的坦克(與上節比較更改MyPanel類即可)
Test.java
~~~
package tkdz;
import javax.swing.*;
import java.awt.*;
public class Test extends JFrame{
MyPanel mp =null;
public static void main(String[] args){
Test t1 =new Test();
}
public Test(){
mp =new MyPanel();//面板
this.add(mp);
this.setSize(400,300);
this.setLocation(300, 280);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
~~~
Tank.java
~~~
package tkdz;
public class Tank {
int x=0,y=0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Tank(int x, int y) {
super();
this.x = x;
this.y = y;
}
}
~~~
MyTank.java
~~~
package tkdz;
public class MyTank extends Tank{
public MyTank(int x, int y) {
super(x, y);
// TODO Auto-generated constructor stub
}
}
~~~
MyPanel.java
~~~
package tkdz;
import java.awt.*;
import javax.swing.*;
public class MyPanel extends JPanel{
MyTank mt=null;
public MyPanel(){
mt=new MyTank(100,100);
//mt1=new MyTank(300,100);雙人游戲
}
public void paint(Graphics g){
super.paint(g);
g.fillRect(0, 0, 400, 300);//背景?
this.drawTank(mt.getX(), mt.getY(), g, 1, 1);
}
public void drawTank(int x,int y,Graphics g,int fangxiang,int leixing)
{
switch(leixing)
{
case 0://我的坦克
g.setColor(Color.yellow);
break;
case 1://敵人的坦克
g.setColor(Color.green);
break;
}
switch(fangxiang)
{
case 0://上
g.fill3DRect(x, y, 5, 30,false);
g.fill3DRect(x+15,y , 5, 30,false);
g.fill3DRect(x+5,y+5 , 10, 20,false);
g.fillOval(x+5, y+10, 10, 10);
g.drawLine(x+10, y+15, x+10, y-3);
break;
case 1://左
g.fill3DRect(x, y, 30, 5,false);
g.fill3DRect(x, y+15, 30, 5, false);
g.fill3DRect(x+5, y+5, 20, 10, false);
g.fillOval(x+10, y+5, 10, 10);
g.drawLine(x+15, y+10, x-3, y+10);
break;
case 2://下
g.fill3DRect(x, y, 5, 30,false);
g.fill3DRect(x+15,y , 5, 30,false);
g.fill3DRect(x+5,y+5 , 10, 20,false);
g.fillOval(x+5, y+10, 10, 10);
g.drawLine(x+10, y+15, x+10, y+33);
break;
case 3://右
g.fill3DRect(x, y, 30, 5,false);
g.fill3DRect(x, y+15, 30, 5, false);
g.fill3DRect(x+5, y+5, 20, 10, false);
g.fillOval(x+10, y+5, 10, 10);
g.drawLine(x+15, y+10, x+33, y+10);
break;
}
this.repaint();
}
}
~~~

- 書寫心得
- 基礎回顧
- 異常的處理
- equils方法
- 集合類
- ArrayList的遍歷和添加
- ArrayList的刪除插入
- 實例:食品庫存管理
- HashMap
- 集合類的區別和選擇
- 泛型和反射機制
- 圖形化用戶界面(GUI)
- JFrame容器
- 邊界布局管理器
- 流式布局管理器
- 網格布局管理器
- Jpanel面板
- 文本框和標簽
- 單選按鈕和復選按鈕
- 下拉列表框和滾動條
- 拆分窗口
- 聊天窗口
- 用戶登錄界面
- 記事本界面
- 線程
- 創建線程的方法
- 線程的優先級
- 線程的睡眠
- 線程的讓步與阻塞
- 買票問題
- 生產消費問題
- IO流
- 字符流
- 字節流
- 緩沖流
- 數據流傳輸
- 轉換流
- 空字符串區別
- Print流
- Object
- IO流補充
- 繪圖技術和事件處理機制
- 繪圖基礎-繪制圖形
- 繪圖基礎-繪制圖像
- 繪圖基礎-繪制文字
- 事件處理-事件監聽
- 事件處理-控件事件
- 事件處理-鍵盤事件
- 事件處理-鼠標事件
- 事件處理-窗口事件
- 記事本
- 坦克大戰
- 階段1
- 階段2
- 階段3
- 階段4
- 階段5
- 階段6
- 階段7
- 階段8
- 階段9
- 階段10
- 階段11
- 階段12
- 階段13
- 階段14
- SQL Server 2005
- 簡易學生管理系統
- 階段(1)-顯示
- 階段(2)-查詢
- 階段(3)-添加
- 階段(4)-刪除
- 階段(5)-修改
- 簡易餐飲管理系統
- 階段-01
- 階段-02
- 階段-03
- 階段-04
- Index.java
- Login.java
- Main.java
- MyFont.java
- ImagePanel.java
- Conn.java
- Moxing.java
- 網絡編程基礎
- 互發信息(1)-傳輸
- 互發信息(2)-互發
- 互發信息(3)-GUI
- 互發信息(4)-對象流
- 網絡聊天工具
- 階段--01--界面
- Server
- Index
- Client
- Login
- Chat
- List