paintComponent 被多次调用

问题描述 投票:0回答:1

我正在制作一款射击游戏。当子弹(JLabel)穿过敌人(JPanel)时,将调用paintComponent()方法,直到子弹穿过敌人......为什么呢?我的猜测是,当两个组件通过时,默认情况下会调用 PaintComponent() 方法,这是正确的吗? 🤔(我还没有在我的代码中使用任何碰撞检测。)

java swing components paintcomponent
1个回答
0
投票

当 GUI 的一部分有“脏像素”并且需要重新绘制时,paintComponent 方法调用通常由操作系统或 Swing 绘制引擎发起。您也可以建议通过拨打

repaint()
来调用它。

底线是:您无法直接控制何时或是否会调用它,因此您的程序逻辑不应依赖于它在精确时刻被调用。

话虽如此,您会想要更改/改进您的程序结构:

  • 你的项目符号不应该是 JLabel
  • 你的“敌人”不应该是JPanel
  • 相反,它们应该由逻辑(非 GUI)类表示,并在负责所有程序图形的单个 JPanel 中显示为图像精灵,该 JPanel 覆盖 PaintComponent。
© www.soinside.com 2019 - 2024. All rights reserved.