问题描述
由于图片要更新,所以使用一个repaint()方法,但是我发现这方法放在KeyEvent后遇到的问题就是,子弹的图片更新不了,放在paint()中虽然可以刷新全部的图片,但是CPU占用率极高。希望前辈们给我一点经验,既能解决图像刷新的问题,又能不占用太高CPU的资源方法
解决方案
解决方案二:
看人家介绍Swing的reinvalidate(),invalidate(),validate(),repaint(),paint()的区别与调用时刻的介绍,如果你改了尺寸相关的东西却不是通过界面鼠标调的(代码调的)或位置,应该通知Swinginvalidate()去重新计算变化的部分,如果Swing在repaint()中觉得没有什么变了,它就什么都不做。因为你现在的代码并没有修改这个JButton的任何property,也就没有触发任何propertychange事件,因此Swing觉得你好像没改什么东西它也就什么也不做,换个角度,如果你按键之后是通过myButton.setIcon()来换个图标或许它就知道有变化了。总之,你可以尝试的是先尝试validate,invalidate或reinvalidate之后再来repaint。另外文档还提到了,当我们直接paint时绘图的双倍缓冲的效果就忽略了。
解决方案三:
你把repaint()放到keyRelease事件中去就可以啦,就这么容易!
时间: 2024-09-17 04:07:48