单击新位置时如何阻止形状消失?

How to stop the shape from disappearing when you click on new location?

我已经编写了通过单击鼠标显示形状的代码,但我遇到了问题。当我点击新位置时,形状在前一个位置消失。我怎样才能阻止这种情况发生?

第一个Class:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MouseClick {
    private static int x,y;
    private static DrawingObjects object = new DrawingObjects();

    public static void main(String[] args){

        JFrame frame = new JFrame("MouseClick");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.add(object);
        object.addMouseListener(new AL());
    }
    static class AL extends MouseAdapter{
        public void mouseClicked (MouseEvent e){
            x = e.getX();
            y = e.getY();
            object.drawing(x, y);
        }
    }
}

第二个Class:

import javax.swing.*;
import java.awt.*;

public class DrawingObjects extends JPanel{
    private static int x,y;

    public void drawing(int xx, int yy){
        x = xx;
        y = yy;
        repaint();
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.fillRect(x, y, 20, 20);
    }
}

处理这个问题的最好方法是跟踪每个被点击的点,并在 paintComponent 中重新绘制每个点。

所以将 private static int x, y 更改为 private List<Point> points = new ArrayList<>(),然后添加:

public void drawing(int x, int y){
    points.add(new Point(x, y));
    repaint();
}

然后重绘时遍历每个点:

public void paintComponent(Graphics g){
    super.paintComponent(g);
    for(Point p : points){
        g.fillRect(p.x, p.y, 20, 20);
    }
}