javaswing 坦克大战卡顿问题

46311062 2020-03-26 09:42:54

每次一按j键后项目就开始卡顿?
...全文
256 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyiz 2020-03-26
  • 打赏
  • 举报
回复
先不说你这种用一个控件来模拟子弹,添加到另一个容器上的方式,本身就是一种对资源的极大负担

你这个“子弹JLabel”,在一个new Thread里,去setIcon、setBounds,
也是不安全的,这种会触发绘制的设置,应该在EDT(Swing的事件指派线程)中执行
Swing提供了一个简单暴力的方法来处理这个问题,
你可以用 SwingUtilities.invokeLater 来执行这类代码
(当然,sleep不能放到SwingUtilities.invokeLater中)

并且在你做过 setBounds , add, remove 这些操作之后,为了确保这个控件能被正确及时的的绘制
你需要调用其容器控件(在你的代码中就是jf)的 revalidate 和 repaint 方法

62,626

社区成员

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

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