在一个游戏里用了 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方法的。