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

【Swing】 paintImmediately 的效率问题若干

在一个游戏里用了 paintImmediately 来刷新某 JComponent c

c 为 opaque,空布局,没有子控件

用 System.currentTimeMillis() 取时间差测得 c 的 paintComponent() 方法耗时为 0 ms

c.paintImmediatly 的每次调用却耗时 15 ~ 16 ms 不等,这正常吗?


我测量的方法正确吗?


有没有什么办法改进 paintImmediatly 的效率?

如果不用 paintImmediatly,有什么办法可以安全的得到一个往屏幕上绘制 c 的 Graphics 对象?
swing 游戏 jcomponent

------解决方案--------------------
多线程机制。
------解决方案--------------------
测试时间的方法可以。刷新方法可以用repaint方法,paintimmediately很少使用了。
------解决方案--------------------
看painImmediately的介绍

Paints the specified region in this component and all of its descendants that overlap the region, immediately.

如果没有子控件,也许可以考虑不采用这方法,但可能会得不到“立即”的效果。虽然painImmediately方法最终也是调用paint方法的。