java 画图 怎么清除已经画出来的图形_Java:实现一个简易的画板功能

这篇博客记录了一位Java初学者实现一个简易画板的过程,包括直线、矩形、多边形的绘制,颜色选择,以及清除画板等功能。通过JFrame创建窗口,使用画笔类实现图形绘制,并通过监听器处理用户交互。文章详细介绍了如何处理窗体大小变化时保持图形不消失的问题,提供完整的源代码供读者参考。

cecae6a3adcfbad379078ce84d115263.png

java小白,最近刚开始学习java,在这记录分享这个简易画板(直线、矩形、多边形)的实现,希望能和大家多多交流。写的会比较细,有说的不好的地方,欢迎大佬拍砖。

这个画板的功能就是能通过选择图形按钮与颜色按钮来画出自己想画的图形。

首先我们要做一个可视化界面,用JFrame类即可,JFrame是一个窗体类,就是我们平时见到的窗体框架,当我们实例化一个JFrame对象时,相当于就是创造了一个窗体。

于是我们先定义一个类的方法,建立一个窗体,并设置属性,再在main方法中调用这个方法就会出现一个窗口。

public 

这样我们就已经做好了一个简单的窗体程序,接下来我们要在窗体上添加各种功能,比如画画功能,比如重绘功能(后面会详细介绍),比如改变画笔颜色,比如画各种图形,比如清除画板等等。

我们先通过数组给窗体添加组件,还要获取一个画笔来画出图形。在Java中,有一个画笔类,我们只需要实例化画笔对象即可,而画笔对象不是new出来的,我们需要用一个JFrame对象来获取。

DrawMouse 

要想按钮有我们预想的功能,我们就需要给按钮添加动作监听器,并给窗体添加上鼠标监听器。添加的监听器的方法参数是ActionListener,MouseListener两个接口,所以我们自己需要新建一个类(DrawMouse)来实现这两个接口,以改写监听方法,实现想要的功能。

public class DrawMouse implements MouseListener, ActionListener {
	private int x1, y1, x2, y2,x3,y3,newx,newy,x0,y0;
	private String name;
	private Color color;
	private boolean flag = true;
// 定义画笔类变量
	private Graphics gr;
	
        public void setGr(Graphics g) {
		gr = g;
	}
	public void mouseClicked(MouseEvent e) {
		x3 = e.getX();
		y3 = e.getY();
		if("多边形".equals(name) && !flag) {
			gr.drawLine(newx,newy,x3,y3);

	        newx = x3;
	        newy = y3;
			if(e.getClickCount()==2) {
				gr.drawLine(x0, y0, x3, y3);
				flag = true;
			}
		}
	}

	@Override
	public void mousePressed(MouseEvent e) {
		x1 = e.getX();
		y1 = e.getY();
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		x2 = e.getX();
		y2 = e.getY();

		if ("直线".equals(name)){
			// 画线
			gr.drawLine(x1, y1, x2, y2);
		
		}
		if ("矩形".equals(name)){
			// 矩形
			gr.drawRect(Math.min(x1,x2), Math.min(y1,y2), Math.abs(x2 - x1), Math.abs
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值