简易画图板的升级版本1.2

自打上次做了画图板之后已经很久没更新了,原因可能是因为我老是觉得自己的java烂到爆,总想着以后再去解决。但是事情不该拖的。反正,今天总算是解决了。如释重负吧。不过,这个鬼东西,闲着没事的时候我还会继续优化,继续升级我的各种版本。

言归正传。先来给大家展示一下这货~~


这次的画图板,我在上次做画图板的基础上(详情见上上上一篇博客)添加了以下功能:重绘铅笔橡皮圆角矩形颜色面板。下面我简单用语言描述一下我所遇到的重点问题,详细请见代码,下载地址请戳这里:http://download.csdn.net/detail/miao933/5492989

1.先来说一下重绘功能,所谓的重绘,其实是重写paint方法。由于每次对JPanel 进行点击,更改大小等任何操作的时候,系统会自动调用paint方法,而原本的paint方法没有内容,导致用户所画图形会消失。为了解决此问题而重写该方法。

写该方法的时候要注意三个问题:a. mouselistener 应该由panel_draw添加,防止坐标偏移。(同理,画布Graphics也要注意由panel_draw获取)

                                                    b.在paint方法中要用super调用父类的方法,形如:super.paint(g),原因是因为此方法实际上将绘制工作委托给三个受保护的方法: paintComponent  paintBorder和paintChildren.按列出的顺序调用这些方法,以确保子组件出现在组件本身的顶部。所以如果不调父类该方法,那么paint方法的重写是没有意义的,没有真正达到重绘的目的。

                                                    c.自己定义一个MyList队列,用来存放每一次绘制的shape,以便重绘时调用,将队列中的内容重新绘制到面板上。


2.再来说说铅笔功能。打开xp画图板,用铅笔功能绘制一段线条,再拿放大镜放大,便可以看出它是由一段一段的线段组成的。因此我们仍可以采用之前我上次博客中绘制直线 的方法,只需稍做修改,不停地侦听并转换坐标即可。

3.橡皮功能,我是用fillRect 实现的,并在传参之前将color 赋值为白色。还有一点缺陷,就是当鼠标拖动速度过快的时候,变使得橡皮所擦内容出现间距。也许会在接下来的版本中进行改进。

4.圆角矩形,更简单了,系统中就有该方法。不多说了,和上次实现的矩形类似。

5.最后说一下颜色面板的问题。和工具面板一样,为了减少冗余代码,定义了一个String类型的数组,然后在for 循环内进行设置按钮,以及添加监听,使得画板富有生命

6.补充一条传参的问题,传参发生在两个类之间建立的联系上,一般来说是一个形如X x = new X();在括号内进行传参,当需传很多数据,其值又是变量,只要把他定义成当前类的属性,然后统一用this传给对方即可解决。

7.再次补充,内部类。实现接口或抽象方法中的方法时可以利用内部类。


ps:这次做画图板最大的收获呢,就是我一直以来望而却步的java,其实没有想象中的可怕,反而让我有了兴趣。也让我学会了思考。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值