Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使图形移动而不显示跟踪,但在绘制另一个图形时保持跟踪?_Java_Swing_Java 2d - Fatal编程技术网

Java 如何使图形移动而不显示跟踪,但在绘制另一个图形时保持跟踪?

Java 如何使图形移动而不显示跟踪,但在绘制另一个图形时保持跟踪?,java,swing,java-2d,Java,Swing,Java 2d,我试图用paintComponent在JPanel中画一个圆圈,每次调用repaint()。但是当我移除super时,它会显示圆移动的轨迹。那么,我该如何在移动后保持圆圈不显示其轨迹呢?在Swing中绘画是破坏性的,这就是它的工作原理 发生绘制循环时,您需要从头开始重新绘制零部件状态 这意味着您需要维护某种模型,绘制方法可以使用该模型整体重新绘制状态 我建议您阅读上Swing教程中的部分,了解有关绘画工作原理的更多详细信息。它显示了如何在单击鼠标的位置绘制正方形 因此,您的逻辑与此类似,不同的是

我试图用
paintComponent
JPanel
中画一个圆圈,每次调用
repaint()。但是当我移除
super
时,它会显示圆移动的轨迹。那么,我该如何在移动后保持圆圈不显示其轨迹呢?

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

发生绘制循环时,您需要从头开始重新绘制零部件状态

这意味着您需要维护某种模型,绘制方法可以使用该模型整体重新绘制状态


我建议您阅读上Swing教程中的部分,了解有关绘画工作原理的更多详细信息。它显示了如何在单击鼠标的位置绘制正方形

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


您可以使用
摆动计时器来安排此动画。本教程还有一节介绍如何使用Swing计时器,其中包含一个可供您入门的工作示例

读了几遍之后,我仍然不确定你想要产生什么效果。如果要保留以前的圆圈,请将所有内容绘制到图像并显示图像。如果不是,则使用
super.paint(g)
作为重写方法的第一行。