Java 重新绘制边框将删除以前绘制的形状

Java 重新绘制边框将删除以前绘制的形状,java,swing,paintcomponent,Java,Swing,Paintcomponent,我目前正在使用Java进行绘制,遇到了一个问题,即重新绘制会擦除先前绘制的形状。以下是我的问题的一个例子: public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.LIGHT_GRAY); click.paintPiece(g); } 每次单击鼠标时,都会在paintComponent方法中调用paintPiece方法。我在这里

我目前正在使用Java进行绘制,遇到了一个问题,即重新绘制会擦除先前绘制的形状。以下是我的问题的一个例子:

public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.LIGHT_GRAY);

        click.paintPiece(g);
    }
每次单击鼠标时,都会在paintComponent方法中调用paintPiece方法。我在这里遇到的问题是,在创建新的椭圆时,先前绘制的椭圆将被擦除。还需要注意的是,每次单击鼠标时,我都会重新绘制窗口。如何在不删除先前绘制的椭圆的情况下绘制新的椭圆

解决方案1:创建一个ArrayList并在鼠标单击时用一个新项目填充它。在您的组件中。。。方法,遍历列表,绘制每个形状。 解决方案2:使用BuffereImage上调用getGraphics获得的图形对象将椭圆绘制到BuffereImage上,然后在paintComponent方法中绘制该BuffereImage。使用完BI的图形对象后,别忘了处理它。 解决方案1:创建一个ArrayList并在鼠标单击时用一个新项目填充它。在您的组件中。。。方法,遍历列表,绘制每个形状。 解决方案2:使用BuffereImage上调用getGraphics获得的图形对象将椭圆绘制到BuffereImage上,然后在paintComponent方法中绘制该BuffereImage。使用完BI的图形对象后,别忘了处理它。
public void paintPiece(Graphics g) {
        int x = (getMouseX())*70 + 10;
        int y = mover.getRow()*70 + 10;
        g.fillOval(x, y, 50, 50);
    }