Java实现画图板画一只百度熊

Java实现画图板画一只百度熊

笔记:
1、界面

2、鼠标监听器
鼠标按下:
获取坐标
鼠标松开:
获取坐标
画线
3、变量的作用域:在自己所属的代码块中。
局部变量和属性同名,则以局部变量优先显示。

4、Graphics : 提供了绘图相关的方法
需要绘图,则根据绘图区域的组件调用getGraphics()方法获取Graphics的对象。
调用getGraphics方法一定要在界面可见之后。

目标:
1、绘制一个百度熊。目标如图:百度熊

代码块如下

DrawUI.java
import java.awt.Graphics;
import java.awt.Button;
import java.awt.Dimension;
import  java.awt.FlowLayout;
import javax.swing.JFrame;

public class DrawUI {
	
	//显示界面的方法
	public void showUI() { 
		//创建窗体对象
		JFrame drawFrame = new JFrame();
		//设置属性
		drawFrame.setSize(1000, 600);
		drawFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		drawFrame.setLocationRelativeTo(null);
		
		FlowLayout flowl = new FlowLayout();//流式布局
		drawFrame.setLayout(flowl);
		
		Button login1 = new Button("图形1");//建立图形选择按钮
		Dimension size = new Dimension(360,35);//大小
		login1.setPreferredSize(size);
		drawFrame.add(login1);
		
		Button login2 = new Button("图形2");//建立图形选择按钮
		login2.setPreferredSize(size);
		drawFrame.add(login2);
		
		/*pic1,pic2是想实现两个按钮去切换图形,暂时还没实现*/
		 DrawListener2 loginL = new DrawListener2();//设置监听器
		 DrawListener2 loginR = new DrawListener2();//设置监听器
			login1.addActionListener(loginL);//给按钮加监听器
			login2.addActionListener(loginR);//给按钮加监听器
			loginL.pic1 = login1;//给监听器赋值
		    loginR.pic2=  login2;//赋值
		    	
		//添加监听器
		DrawListener drawL = new DrawListener();
		drawFrame.addMouseListener(drawL);
		
		//设置可见
		drawFrame.setVisible(true);
		//获取画布
		Graphics g = drawFrame.getGraphics();
		//给监听器的属性赋值
		drawL.setGraphics(g);
		drawFrame.setVisible(true);
		
	}

	//主方法
	public static void main(String[] args) {
		//创建界面对象
		DrawUI ui = new DrawUI();
		//显示界面
		ui.showUI();
	}	
}

监听器部分
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
这三种方法虽然没有实现,但是要写出来

DrawListener.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class DrawListener implements MouseListener{

	//记录坐标的信息
	int x1,y1,x2,y2;
	
	//画布
	private Graphics g;
	
	//设置画布的方法
	public void setGraphics(Graphics g) {
		this.g = g;
	}
	
	public void mousePressed(MouseEvent e) {
		//获取坐标
		x1 = e.getX();
		y1 = e.getY();
		}
    public void mouseReleased(MouseEvent e) {
    	//获取坐标
    	x2 = e.getX();
    	y2 = e.getY();
    	
    	//画线
    	//g.drawLine(x1, y1, x2, y2);
    	//画椭圆
    	//g.fillOval(x1, y1, 110, 100);
    	   	
    	//画熊
    	//头
    	Color color = new Color(224,178,142);
    	g.setColor(color);
    	g.fillOval(x1, y1, 110, 100);
    	//眼睛
    	g.setColor(Color.WHITE);
    	g.fillOval(x1+20, y1+32, 18, 24);
    	g.setColor(Color.WHITE);
    	g.fillOval(x1+75, y1+32, 18, 24);
    	//眼黑
    	g.setColor(Color.BLACK);
    	g.fillOval(x1+23, y1+36, 10, 14);
    	g.setColor(Color.BLACK);
    	g.fillOval(x1+78, y1+36, 10, 14);
    	//嘴巴
    	Color colorhui =new  Color(248,246,229);
    	g.setColor(colorhui);
    	g.fillOval(x1+37, y1+50, 40, 30);
    	//鼻子
    	g.setColor(Color.BLACK);
    	g.fillOval(x1+53, y1+50, 9, 9);
    	//左耳朵
    	g.setColor(color);
    	g.fillOval(x1+3, y1+3, 22, 22);
    	//右耳朵
    	g.setColor(color);
    	g.fillOval(x1+84, y1+3, 22, 22);
    	
       	//输出
    	System.out.println("起点("+x1+","+y1+"),终点("+x2+","+y2+")");
    }
    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
}



DrawListener2.java
//此部分还只做了两个按钮,还没有具体实现
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Button;
import java.awt.Color;

public   class DrawListener2 implements ActionListener{
                 Button pic1;
                 Button pic2;
                 public void actionPerformed(ActionEvent e) {
                     
                	// pic1.setBackground(Color.green);
                	// pic2.setBackground(Color.yellow);
                 }
				
}

效果如图效果如图
这样就可以画出一只百度熊了。绘制百度熊比较容易,掌握好椭圆的绘制方法与各个椭圆的坐标就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值