重绘原因
当窗体的大小改变后,画板上画图形的缓存会自动清空(屏幕上绘制的图像是将窗体中的对象数据从内存中取出来放到缓存中,再绘制的。),重新调用paint方法,但是paint中没有重绘这些图形的方法,只重绘窗体上的组件。
重绘步骤
1.用重新定义一个绘图的shape类用来保存图形的数据,绘制想要在窗体上绘制的图形 ,不直接用画笔绘制图形到窗体上,而是利用自己定义的绘制图形的方法。
![](https://i-blog.csdnimg.cn/blog_migrate/a06f259e7e18ba405d12673b30c0f3ff.png)
![](https://i-blog.csdnimg.cn/blog_migrate/369d293d0175a71d5241015237f8f43b.png)
2.将这些图形存在一个数组中
![](https://i-blog.csdnimg.cn/blog_migrate/40de3b8844a97100211925d33683bd5d.png)
3.重写窗体JFrame的paint方法,在方法中将数组的图形元素取出,逐一绘制在窗体上。
![](https://i-blog.csdnimg.cn/blog_migrate/bd74d9118a163143d680d75422345415.png)
为何要自己定义一个绘制图形的方法?
(将每个图形的基本属性写成类的基本属性,哪里要绘制图形,调用它对应的方法即可)。