java [25] 图形化 ——绘图

通过定义一个继承Jpanel的panel来绘制图形:

package tank;

/*
 * 
 * 
 * java绘图原理
*/

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

public class test1 extends JFrame{
	Mypanle mp;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		test1 test = new test1();
		
	}	
	public test1() {
		mp = new Mypanle();
		this.add(mp);
		
		this.setSize(300, 300);
		this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
		this.setVisible(true);
		
		
		
	}
		
		
 
	

}

//定义一个mypanel 自己的面板用于绘图和显示绘图的区域
class Mypanle extends JPanel{
	
	// jpanel 的paint方法
	// Graphics 是绘图的重要类,可以理解为一只画笔;
	public void paint(Graphics g) {
		//调用父类 函数,完成初始化任务;不可少
		super.paint(g);
		//画一个圆,前面两个是位置 后面是宽度和高度;
		/*g.drawOval(5, 100, 20, 20);
		//画直线
		g.drawLine(10, 10, 40, 40);
		 
		//画矩形边框 
		g.drawRect(10, 10, 40, 60);
		//设置颜色
		g.setColor(Color.BLUE);
		//填充矩形
		g.fillRect(100, 100, 40, 40);*/
		
		/*//在面板上画图片;
		Image im = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/1.jpg"));
		//显示
		g.drawImage(im, 90, 90, 200, 150, this);*/
		
		//画字 
		/*g.setColor(Color.orange);
		g.setFont(new Font("华文彩云", Font.BOLD, 50));
		g.drawString("thank you!", 100, 100);*/
		
		
	}
	
	
	
	
}

绘制一个坦克:

package tank;

import javax.swing.JFrame;

/*
 * 
 * 
 * 坦克游戏1.0 
画出坦克
*/

import java.awt.*;
import javax.swing.*;
public class tank_1 extends JFrame{
	mypane mp = null;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		tank_1 tk = new tank_1();
	}
	public tank_1(){
		mp = new mypane();
		
		this.add(mp);
		this.setSize(400,300);
		this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}


// 我的面板  
class mypane extends JPanel{
	
	//定义一个我的坦克
	Helo hero = null;
	
	//构造函数 
	public mypane() {
		hero = new Helo(10, 10);
		
	}
		
	//重新paint
	public void paint(Graphics g) {
		super.paint(g);
		
		//填充背景
		g.fillRect(0, 0, 400, 300);
		this.drawTank(100, 100,g, 0, 0);
		/*g.setColor(Color.CYAN);
		// 画出我的坦克;(可以封装成一个函数)
		//左边矩形
		//g.fillRect(hero.getX(), y, 5, 30);
		g.fill3DRect(hero.getX(), y, 5, 30,false);
		
		// 画出右边的矩形
		//g.fillRect(hero.getX()+15, y, 5, 30);
		g.fill3DRect(hero.getX()+15, y, 5, 30,false);
		
		g.setColor(Color.white);
		//画出中间矩形 
		//g.fillRect(hero.getX()+5, y+5, 10, 20);
		g.fill3DRect(hero.getX()+5, y+5, 10, 20,false);
		
		//画出圆形
		g.fillOval(hero.getX()+5, y+10,10,10);
		
		//画出线
		g.drawLine(hero.getX()+10, y+10,hero.getX()+10,10);*/
		
	}
	
	//画坦克的函数 
	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);
		default:
			break;
		}
		
		//判断方向
		switch (direct) {
		//向上
		case 0:
			// 画出我的坦克;(可以封装成一个函数)
			//左边矩形
			//g.fillRect(x, y, 5, 30);
			g.fill3DRect(x, y, 5, 30,false);
			
			// 画出右边的矩形
			//g.fillRect(x+15, y, 5, 30);
			g.fill3DRect(x+15, y, 5, 30,false);
			
			//画出中间矩形 
			//g.fillRect(x+5, y+5, 10, 20);
			g.fill3DRect(x+5, y+5, 10, 20,false);
			
			//画出圆形
			g.fillOval(x+5, y+10,10,10);
			
			//画出线
			g.drawLine(x+10, y+10,x+10,y-2);
			break;

		
		}
		
		
		
	}
	
}



//坦克类  
class Tank{
	//坦克的横坐标
	int x =0;
	//坦克的纵坐标 
	int 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) {
		this.x = x;
		this.y = y;
		
	}
	
	
	
	
}

class Helo extends Tank{
	
	public Helo(int x,int y) {
		super(x,y);
	}
	
}





猜你喜欢

转载自blog.csdn.net/qq_38125626/article/details/81330867
今日推荐