如何使图形在不显示描摹的情况下移动,但在我绘制另一个图形时保留它



我试图用paintComponent JPanel画一个圆圈,每次它去除所有原始油漆时我都会打电话给repaint()。但是当我删除super时,它会显示圆圈移动的痕迹。那么我应该怎么做才能在移动后保持圆圈而不显示它的痕迹呢?

Swing 中的绘画是破坏性的,这就是它的工作原理。

发生绘制周期时,应从头开始重新绘制组件状态。

这表明您需要维护某种模型,绘制方法可以使用它来重新绘制整个状态。

我建议看看 AWT 和 Swing 中的绘画 有关绘画如何工作的更多详细信息

首先阅读自定义绘画的 Swing 教程中的部分。它演示如何在单击鼠标的位置绘制正方形。

因此,您的逻辑将是相似的,只是不使用鼠标来确定圆的新位置,而是使用编程逻辑来更改圆的 x/y 位置。

可以使用Swing Timer来计划此动画。本教程还有一个关于How to Use Swing Timers的部分,其中包含一个工作示例来帮助您入门。

最新更新