我发现swing中的JFrame的一个问题!!

rypgood 2007-06-16 05:41:24
今天看到有个人发了个贴说想做个模拟放烟花的小程序,一是心血来潮,就想做一个玩玩。
由于swing组件比较漂亮,自己也比较喜欢用swing,所以我基本上没想什么就用了个jframe了。但是当我什么都写好后调试发现:repaint没起到应有的作用,而是直接paint了,我就感觉到奇怪了,平时间看书都说调用repaint会先调用update方法,然后才paint,这样就会清屏,所以我就试下把update方法放到paint()方法的第一句中,问题出现了,来了个死循环,一直提示错误。
没办法,只好看看jframe的真面目了,不看不知道,一看吓一跳,发现其方法如下:

public void update(Graphics g) {
paint(g);
}
这个方法竟然是这样用的!!!难怪我用jframe的时候一直发现,我做的游戏没有继承canvas类的话显示会出问题呢!!
另外,你会发现,如果你用jframe的时候,改变jframe的大小,这样会导致里面的组件、图象等看不见,这个问题还没有发现到底是怎么回事,因为里面有些东西还没有看懂。
请问各位前辈门,JFrame中的update这样用是正确的吗??还是我错了??
请各位指正!!
...全文
267 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxc135 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]


[/Quote]最烦你这种垃圾!!!
believefym 2007-06-19
  • 打赏
  • 举报
回复
楼主不要转牛角尖了
update,提供接口,子类完全可以不直接调用paint,也许你自己的某个类就是需要重写update的
另外,有时候,这只是为了更容易理解
比如打字print,你需要重复打,你可能在第二次以后用reprint,但是实际还是只是调用print而已
rypgood 2007-06-16
  • 打赏
  • 举报
回复
那还要update干什么??
而且,repaint也没用了
这样不是使这两个方法没用了么?
believefym 2007-06-16
  • 打赏
  • 举报
回复
update本来就是直接调用paint,楼主看api
iwillrockyou 2007-06-16
  • 打赏
  • 举报
回复
没用过。。。帮顶。。。
andylauhai 2007-06-16
  • 打赏
  • 举报
回复

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧