Java基础之简单画图板的实现

Java基础之简单画图板的实现

不难理解,画图板就是主要用鼠标的各种操作实现在窗体界面上绘图。所以实现一个简单的画图板,就必须先有一个事件源对象(窗体界面),为了更加美观,再在窗体界面上实例化两个面板对象,在其中一个面板对象上定义所画图形按钮(可以使用流式布局来世界面更美观);画图时,只在另一个面板对象上面进行操作。代码如下:

 注:暂不考虑重绘问题

 

 

如果想要在画图板面板上实现绘图,就必须为其添加一个监听器来监听鼠标对其的操作。定义监听器的代码如下:

 

这里我所写的简单画图板主要实现  "画笔","画直线","画矩形","画椭圆","画三角形""改变所画图形颜色","设置画笔粗细"的功能。

要实现画不同的图形,就必须要点击不同的按钮来选择要画的是一个什么样的图形,对此如果我们一个一个声明不同的按钮,则会定义较多的名称,而且还会影响代码的简洁性,所以可以将这些不同的按钮定义成一个数组中储存的对象,同理颜色按钮也可以声明一个数组来储存,在这里我选择字符串类数组储存按钮上的字符串,Color类数组储存按钮上的颜色。实现代码如下:(注意添加监听器)

 

扫描二维码关注公众号,回复: 3305133 查看本文章


最后,要实现画图,就必须获取画笔对象,获取画笔对象需要注意两点:

1、图形画在哪个图形上,那么画笔组件就在这个图形上获取

2、获取画笔对象,一定在窗体可见之后

3、获取的画笔对象必须要用一个方法来传给自己定义的事件监听类中

实现代码如下:

 

其中DrawMouse类中定义了

public void setG(Graphics g) {

this.g = g;

}

方法来传递画笔。

以上的基本工作完成之后,就关注可以具体如何画出一个图形出来。

定义一个DrawMouse类继承了接口MouseListener, ActionListener,MouseMotionListener

首先需要实例化一个Graphics对象g来接收传过来的画笔对象,由于我使用的是字符串数组来储存按钮上面的字符串,以及Color类的数组储存按钮的背景颜色,所以在重写ActionListener接口中的actionPerformed方法时,要首先获取按钮上的颜色或者文字,当获取的不是文字时,说明点击的是颜色按钮,读取按钮的颜色后给设置画笔的颜色;如果读取的是文字时,需要继续下一步的操作,实现代码如下:

 

Java中提供了许多画图形的方法,画图的时候毫无疑问需要获取一定数量的坐标值,在继承的接口中的方法里,有一个MouseEvent类型的形参e,可以通过调用getX(),getY()来获取经一定操作后当前位置的坐标的x值或y值。

用画笔实例化的对象调用drawLine(x1,y1,x2,y2)方法可以画一条直线,x1,x2,y1,y2分别代(起点的x值,中点的x值,起点的x值,中点的x值)而实现画笔的功能可以看作不断地画长度很小的直线所以个可以通过此方法来实现:

 

使用画笔对象g调用drawRect(x1,y1x2,y2)方法可以实现画一个矩形,但需要注意的是,x1,y1代表的是矩形左上顶点的坐标,也就是矩形四个点的坐标中xy值都取最小的那个点。使用drawOval(x1,y1x2,y2)方法实现画一个椭圆,画出的椭圆可以看作是一个矩形的内切椭圆,原理和drawRect方法类似。

由于java中没有定义画三角形的函数,所以需要通过一个变量a的操作来控制花三条直线的方法来实现。

 

三角形的画法(鼠标点击三次):

 

猜你喜欢

转载自blog.csdn.net/HNU_Csee_wjw/article/details/51502934
今日推荐