简单画图板



 制作一个简单画图板

简单的画图板,能够在窗口中通过鼠标的移动来画出简单的图形。

 

首先需要建立一个JFrame界面,设置该界面的各种属性(size,title……)。

在JFrame中有一个getGraphics()方法,可以得到一个Graphics对象,该对象又有许多draw方法,可以实现“画”这一行为,draw方法的参数是鼠标所在坐标,这样就可以通过移动鼠标来进行绘画,问题是如何让draw方法得到鼠标实时的坐标位置信息呢?

 

关键:添加鼠标监听器,用来接受鼠标事件(click,pressed,released……)。

在JFrame类中有添加鼠标事件监听器的方法  frame.addMouseListener();
不过,通过查看MouseListener的源代码可以知道,它是一个接口,方法体都是空的。想要使用它,必须新建一个类实现该接口,对原来的方法进行重写(由于是普通类接口,所有方法都要重写)。

public class MyMouseListener implements MouseListener {

}

 在该类中,创建画布Graphics,并重载一个带Graphics类参数的构造方法,这样,就把画布和鼠标监听器联系在一起了,之后就可以在鼠标监听器接受鼠标事件的方法中使用画布Graphics的各种draw方法,也就使鼠标的各种行为和“画”的行为联系在一起。

	//鼠标的点击Click行为
	public void mouseClicked(MouseEvent e) {
		int x = e.getX();
		int y = e.getY();
		//设置画笔颜色
		Color c= new Color(86,55,78);
		g.setColor(c);
		//画实心圆
		g.fillOval(x-50, y-50, 100, 100);
	}

	 

 

 可以根据要求对鼠标坐标进行处理,使画图位置更加方便(比如在上面的代码中,使鼠标点击的位置成为所画圆的圆心,而不是外切正方形的左上角)

 

来个好玩的补充环节~

 

如果想画出些复杂图形,用循环可以实现意想之外的效果~

对色彩变化,图形大小位置变化的要求都可以通过循环来一一实现

效果绝对好玩

	public void mouseClicked(MouseEvent e) {


		for(int i=0;i<50;i++){
		Color c=new Color(4*i,0,3*i);
		g.setColor(c);
		int x=e.getX();
		int y=e.getY();
	    g.drawOval(x+10, y,50-i/2,50-i/2);
		}
	}

 简单画图板

还可以吧。。

你可能感兴趣的:(画图板)