欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java之坦克大战(一)

程序员文章站 2024-03-22 19:26:04
...

学习了Java的UI绘图后我们现在可以先做一个坦克大战来练练手。(跟着韩顺平老师学习的,安利大家想学习的可以看看)

今天主要是做准备工作,

我们来先画一下基本的东西:

1、直线(其实是线段)。

2、椭圆(包括圆)。

3、矩形(实心和矩形框)。

4、图片显示。

5、汉字显示。

 

接下来我们正式开始:

首先我们需要先新建一个类,这个类主要用来做我们放组件的面板。也是JPanel那边继承过来的。

注:这里我们会用到一个画笔工具 Graphics 类。我们看下说明文档:

Java之坦克大战(一)

Java之坦克大战(一)

这个类很重要。我们画基础图形全部靠他。

接下来我们就不分开上代码了,直接上全部代码:

/**
 * Java绘图原理
 */
package com.test1;

import java.awt.*;
import javax.swing.*;

public class Demo9_1 extends JFrame{

	MyPanel mp = null;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Demo9_1 demo9_1 = new Demo9_1();
	}
	
	public Demo9_1()
	{
		//在构造函数中新建一个MyPanel实例
		mp = new MyPanel();
		
		//把Panel添加到JFrame中
		this.add(mp);
		
		this.setSize(500, 500);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null); //居中显示
		this.setVisible(true);
	}

}


//定义一个MyPanel
//用于绘图和实现绘制的区域
class MyPanel extends JPanel{
	/**
	 * 覆盖JPanel的paint方法
	 * Graphics 是绘图的重要类,可以理解为一只画笔
	 * paint这个函数是自动被调用的。
	 * 当然我们也可以人为调用。
	 * 以下三种情况都会被调用:
	 * 1、窗口最大化、最小化。
	 * 2、窗口大小发生变化。
	 * 3、repaint函数被调用。 
	 *
	 */
	public void paint(Graphics g)
	{
		//1.调用父类函数,完成初始化任务。这都是套路
		super.paint(g);  //这句话不能少,必须要有
		
		//2.先画一个圆圈
		//g.drawOval(10, 10, 300, 300);
		
		//3.画直线,线段
		//g.drawLine(10, 200, 30, 400);
		
		//4.画矩形边框
		//g.drawRect(10, 10, 50, 80);
		
		//5.画实心矩形
		/**
		 * 注:我们画的实心矩形默认颜色是黑色。
		 *    所以我们可以在画矩形之前先设置要画出
		 *    矩形的颜色。(颜色也可以自定义)。
		 *    当我们要画第二个不同颜色的实心矩形时,
		 *    在每次画矩形前设置好颜色就可以了。
		 */
//		g.setColor(Color.RED);
//		g.fillRect(10, 10, 50, 80);
//		g.setColor(Color.cyan);
//		g.fillRect(10, 100, 50, 80);
		
		//6.画椭圆框
		/**
		 * 注:前面的x,y设置的椭圆外切矩形的左上角坐标
		 *     而不是椭圆的圆心。
		 */
		//g.drawOval(20, 20, 40, 80);
		
		//7.画实心椭圆
//		g.setColor(Color.RED);
//		g.fillOval(20, 20, 40, 80);
		
		//8.画图片
		//得到image
		//Image im = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/java_test.jpg"));
		/**
		 * 画图片:
		 * arg1 图片
		 * arg2 左上角横坐标
		 * arg3 左上角纵坐标
		 * arg4 图片宽
		 * arg5 图片高
		 * arg6 this值当前panel
		 */
		//g.drawImage(im, 20, 20, 300, 130, this);
	
		//9.如何画出字
		//设置颜色
		g.setColor(Color.red);
		//设置字体,颜色,字号
		g.setFont(new Font("华文彩云", Font.BOLD, 60));
		//要显示的字内容,显示位置
		g.drawString("祖国万岁!", 100, 200);
	}
}

注:1、demo中有一张图片,没有放上来,大家可以随意换自己喜欢的就好。

       2、super.paint(g);这句话很重要,也是套路,每次新建自己的Panel的时候一定要加上这句。

       3、椭圆和圆是同一个方法,上过高中的都知道椭圆的两个焦点重合时为圆。

 

下面我们分别看下结果:

2、

Java之坦克大战(一)

 

3、

Java之坦克大战(一)

 

4、

Java之坦克大战(一)

 

5、

Java之坦克大战(一)

 

6、  

Java之坦克大战(一)

 

7、

Java之坦克大战(一)

 

8、

Java之坦克大战(一)

 

9、

Java之坦克大战(一)