重绘帧会删除先前绘制的形状

时间:2015-04-13 15:50:22

标签: java swing paintcomponent

我目前正在使用Java进行绘画,并且遇到了重绘()删除之前绘制的形状的问题。以下是我的问题的一个例子:

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

        click.paintPiece(g);
    }

public void paintPiece(Graphics g) {
        int x = (getMouseX())*70 + 10;
        int y = mover.getRow()*70 + 10;
        g.fillOval(x, y, 50, 50);
    }

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

1 个答案:

答案 0 :(得分:4)

  • 解决方案1:创建ArrayList<Ellipse2D>并在鼠标单击时用新项填充它。在paintComponent(...)方法中,遍历列表,绘制每个形状。
  • 解决方案2:使用通过调用BufferedImage上的getGraphics()获得的Graphics对象将您的椭圆绘制到BufferedImage上,然后在paintComponent方法中绘制BufferedImage。使用它时,不要忘记丢弃BI的Graphics对象。