新手提问:JPanel中repaint()的方法问题?

夙染黛流年 2014-10-31 10:05:19


由于图片要更新,所以使用一个repaint()方法,但是我发现这方法放在KeyEvent后遇到的问题就是,子弹的图片更新不了,放在paint()中虽然可以刷新全部的图片,但是CPU占用率极高。希望前辈们给我一点经验,既能解决图像刷新的问题,又能不占用太高CPU的资源方法
...全文
356 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloomyfish 2014-11-03
  • 打赏
  • 举报
回复
你把repaint()放到keyRelease事件中去就可以啦, 就这么容易!
humanity 2014-11-01
  • 打赏
  • 举报
回复
看人家介绍 Swing 的 reinvalidate(), invalidate(), validate(), repaint(), paint() 的区别与调用时刻的介绍, 如果你改了尺寸相关的东西却不是通过界面鼠标调的(代码调的)或位置,应该通知 Swing invalidate() 去重新计算变化的部分,如果 Swing 在 repaint() 中觉得没有什么变了,它就什么都不做。因为你现在的代码并没有修改这个 JButton 的任何 property,也就没有触发任何 property change 事件,因此 Swing 觉得你好像没改什么东西它也就什么也不做,换个角度,如果你按键之后是通过 myButton.setIcon() 来换个图标或许它就知道有变化了。 总之,你可以尝试的是先尝试 validate, invalidate 或 reinvalidate 之后再来 repaint。 另外文档还提到了,当我们直接 paint 时绘图的双倍缓冲的效果就忽略了。

62,614

社区成员

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

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