学了这一章的内容,学会了如何创建框架,设置组件等的知识,收获了很多。
下面一个程序是我从网上学到的,目的是使用画笔画一个坦克。程序如下:
import javax.swing.*; import java.awt.*; /** * 功能: 画出坦克 * 步骤 * 1. 创建坦克类Tank * 2. 创建我的坦克类Hero 继承 Tank * 3. 创建我的面板MyPanel 继承 JPanel * 4. 在TankGame1类中增加MyPanel * */ public class TankGame1 extends JFrame { //创建一个面板对象mp MyPanel mp = null; public static void main(String[] args) { TankGame1 mtg = new TankGame1(); } //构造函数 public TankGame1() { mp = new MyPanel(); this.add(mp); //增加进面板中 this.setSize(400, 300); // 大小 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); //显示 } } //我的面板 class MyPanel extends JPanel { //定义一个我的坦克 Hero hero = null; //构造函数 public MyPanel() { hero = new Hero(100,100); } //重新paint public void paint(Graphics g) { super.paint(g); //定下活动区域 g.fillRect(0, 0, 400, 300); //调用函数drawTank画出我的坦克 this.drawTank(hero.getX(), hero.getY(), g, 0, 1); } //画出坦克的函数 public void drawTank(int x, int y, Graphics g, int direct, int type) { //判断是什么类型的坦克 switch(type) { case 0: g.setColor(Color.cyan); break; case 1: g.setColor(Color.yellow); } //判断方向 switch(direct) { //向上 case 0: //画出我的坦克 //1.画出左边的矩形 g.fill3DRect(x, y, 5, 30,false); //2. 现出右边的矩形 g.fill3DRect(x+15, y, 5, 30,false); //3. 画出中间矩形 g.fill3DRect(x+5, y+5, 10, 20,false); //4. 画出圆形 g.fillOval(x+5, y+10, 10, 10); //5. 画出线 g.drawLine(x+10, y+15, x+10, y); } } } //坦克类 class Tank { int x = 0; //表示坦克的横坐标 int y = 0; //表示坦克的纵坐标 Tank(int x, int y) { this.x = x; this.y = y; } 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; } } //我的坦克 class Hero extends Tank { public Hero(int x, int y) { super(x, y); } }
比较麻烦,用的时间比较多,应该还是不熟练,整个的程序框架和代码都需要更多的练习来达到更好的效果。