日期:2014-05-20  浏览次数:20642 次

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

        public   void   update(Graphics   g)   {
                paint(g);
        }
这个方法竟然是这样用的!!!难怪我用jframe的时候一直发现,我做的游戏没有继承canvas类的话显示会出问题呢!!
另外,你会发现,如果你用jframe的时候,改变jframe的大小,这样会导致里面的组件、图象等看不见,这个问题还没有发现到底是怎么回事,因为里面有些东西还没有看懂。
请问各位前辈门,JFrame中的update这样用是正确的吗??还是我错了??
请各位指正!!

------解决方案--------------------
没用过。。。帮顶。。。
------解决方案--------------------
update本来就是直接调用paint,楼主看api
------解决方案--------------------
楼主不要转牛角尖了
update,提供接口,子类完全可以不直接调用paint,也许你自己的某个类就是需要重写update的
另外,有时候,这只是为了更容易理解
比如打字print,你需要重复打,你可能在第二次以后用reprint,但是实际还是只是调用print而已