有关repaint

本文探讨了在Java Swing中使用repaint方法更新UI的问题。作者在实现俄罗斯方块游戏时遇到repaint方法未能触发paintComponent方法的问题,最终通过将JPanel放入JFrame中解决了此问题。文章还介绍了repaint方法的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     今天做一个俄罗斯方块的程序,用到了repaint方法,并覆写了paintComponent(Graphics g)方法,就是想在调用repaint方法时,它会自动调用paintComponent(Graphics g)方法(重新绘图一般不是覆写repaint方法,而是覆写paint或paintComponent方法)……

     可到实际运行的时候,调用repaint方法,它怎么就不调用paintComponent方法,郁闷至极!调试了很久,终于发现错误,因为在我写的JPanel语句中,我并没有给它一个容器,让其显示,那它怎么会调用paintComponent做显示呢?后来把它放到了JFrame中作显示,调用成功!以下是在优快云提问的情况的一个链接:

http://topic.youkuaiyun.com/u/20090528/10/b810134d-8671-413f-91fe-52a323015f79.html?seed=167026048

  

     在调试这个问题的过程中,翻阅了repaint的源代码,虽然还不是很理解,可基本还是懂得了它的基本运行过程:

     1、对轻量级组件

        javax.swing.JComponent类
        repaint()调用paint()
        paint()调用paintComponent(),paintBorder(),及paintChildren()

     2、对重量级组件

       javax.swing.JComponent类
       repaint()调用update()
       update()调用paint()
       paint()调用paintComponent(),paintBorder(),及paintChildren()

 

    而我们一般在重绘组件时,是覆写paint方法或paintComponent方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值