java画板之重绘

一、为什么要重绘?

在画板上画完图形后,若拖动窗体改变画板窗体大小时,图像会消失,为了让画的图像不消失,就得重绘。

二、重绘是啥?

重绘,顾名思义就是重新绘制图形。通俗来讲就是在做任何操作后,我们将在画板上自动从新画一次原来得图像。也就是起到保存的作用。

三、为什么会出现消失的原因?(摘抄)

首先我们要明白的是当我们将画板窗体移除或者改变画板窗体大小的时候都是画板的Frame框架在不断调用paint()方法。我们写的代码中有给Frame框架增加组件的部分,而这些组件包括框架就是通过paint方法将这些组件“画”到了我们的电脑屏幕上才让我们看到了这些组件。那么当我们将画板最小化、将画板拖到边缘或者改变画图板大小的时候,都是画图板的可视化部分在改变的时候。既然画图板可视部分要改变了,就必须通过重新“画”一个新画板上去实现状态的改变,这就是paint方法调用的原因。而paint方法是一个java早已定义好的方法,java设计者并不知道我们用paint方法是来画图形的,设计者在设计之初只定义了用paint方法把这些组件画出来了,却并没有画我们自己创造的这些图形的这个部分。因此当程序自动调用paint方法时,就没有实现我们之前画的图形的可视化过程,只实现了框架组件的可视化过程,这就是为什么会出现已画图形消失的原因。

四、重绘的思路:

①编写一个paint方法达到重绘效果

②创建一个图形类

③在监听器中创建一个集合,用来储存图形,后面再通过paint()方法遍历集合。

五、代码实现

1、如何重写paint()方法达到重绘效果

java画板之重绘_第1张图片

 ·我们定义一个paint方法用来实现“二次绘图”。

·在代码中我们用到了关键字super,理解为父类的,其用法·super可以用来调用:属性、方法、构造器。·当子类和父类定义了同名的属性时、方法时,我们要想在子类中调用父类中声明的属性、方法,则必须显式的使用“super.方法”的方式,表明调用的是父类中声明的方法。

·接着我们遍历集合绘制图形,集合是在监听器中已创建好的

2、创建一个图形类

java画板之重绘_第2张图片

 3、在监听器中创建一个集合,用来储存图形

注:集合必须在方法外创建。

我创建集合完后,还得接收图形:

 在鼠标松开的方法里,去接收图形,并将图像储存在集合里。

java画板之重绘_第3张图片

 java画板之重绘_第4张图片

 移动窗体图像并没有消失,那就实现重绘了。 

你可能感兴趣的:(java基础,java)