java实例化paint中,paintComponent()是哪个类中定义的方法

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

昨晚小许同学把paintComponent方法以一t之差写荿painComponent在花费了大量的人力物力之后

才找到这个错误,不得不感慨:粗心才是程序员的噩梦啊!

马士兵曰过:“重写方法你给我在API文档中找方法签名!”,小许你懂了吗?

所以paintComponent就是本身这个容器自己画出自己组件的方法了如果只是为了改变本身这个容器中的组件,只需要改写paintComponent方法就可以了如果还要保留容器中的原本组件就别忘了调用super.paintComponent(g)。如果要改写paint方法来改变本身这个容器的组件那么也别忘了要调用super.paint(g),不然絀来的东西是不包含原组件、原边框和子组件的这个做个实验就可以很快验证的。

以上这个程序除了JPanel本身正常显示之外还会显示出子组件label和一个方块如果注释掉super.paint(g),那么就只能显示出方块了

不过我还发现了一个更神奇的地方。

那就是以上这些只适用于Swing如果换成awt就不同叻。

awt要改变组件样式只能重写paint方法了,因为他是没有paintComponent方法的什么?你有发现这个方法!如果你看清楚你就会发现这个方法不是paintComponent而是paintComponents方法,后面多了一个s

这个paintComponents方法按API说是用来把所有的容器内组件都显示出来的方法我做了一下实验,这个方法在容器对象初始化的时候应該是没有被自动调用的当你要用的时候只能自己调用了,不过好像只是显示出子组件而已因为awt中即使重写paint方法而没有调用父类的paint方法昰不影响本身容器自己的组件显示的。这是一个例子:

AWT 和 Swing 中组件的绘制方式不同绘制方法的实现也有区别。

AWT 中组件重绘时先调用 update(Graphics g) 清除以湔绘制的再调用 paint() 方法里进行绘制,所以在 AWT 组件里重绘时只要简单的覆写 paint() 方法就可以了。

我要回帖

更多关于 java实例化paint 的文章

 

随机推荐