学了这一章的内容,学会了如何创建框架,设置组件等的知识,收获了很多。
下面一个程序是我从网上学到的,目的是使用画笔画一个坦克。程序如下:
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);
}
}
比较麻烦,用的时间比较多,应该还是不熟练,整个的程序框架和代码都需要更多的练习来达到更好的效果。