¿Cómo mantener y eliminar múltiples objetos gráficos en aplicaciones Java Swing?

Tengo una imagen y uso posiciones predefinidas para crear objetos gráficos con colores. Con un clic del mouse trato de crear algunos óvalos con colores. En realidad no pude lograr este objetivo. Porque, cuando hago clic en una posición predefinida, podría crear un óvalo en ella, pero cuando hago clic en otra posición predefinida, el primer óvalo se ha ido.

Se puede quitar un óvalo haciendo clic dos veces sobre él.

Mira esto,

public class PrintDialog extends javax.swing.JDialog{
private int count = 0;
private int count_1 = 0;

/**
 * Creates new form PrintFeetDialog
 */
public PrintDialog(java.awt.Frame parent, boolean modal)
{
    super(parent, modal);
    initComponents();
    ImagePanel panel = new ImagePanel("Areas.jpg");
    this.getContentPane().add(panel);
    this.setResizable(false);
    this.setLocationRelativeTo(panel);
    this.pack();
}

private void formMouseClicked(java.awt.event.MouseEvent evt)                                  
{                                      
    // TODO add your handling code here:
    System.out.println("Print y - " + evt.getY());
    System.out.println("Print x - " + evt.getX());

    if ((evt.getX() >= 68 && evt.getX() <= 84) && (evt.getY() >= 44 && evt.getY() <= 72))
    {
        Graphics g = getGraphics();
        count++;
        if (count == 1)
        {
            g.setColor(Color.red);
            g.fillOval(66, 52, 20, 20);
            //  repaint();
        } else if (count > 1)
        {
            g.setColor(new Color(-3692899));
            g.fillOval(66, 52, 20, 20);
            repaint();
            count = 0;
        }
        g.dispose();
    }

    if ((evt.getX() >= 137 && evt.getX() <= 157) && (evt.getY() >= 50 && evt.getY() <= 75))
    {
        Graphics g1 = getGraphics();
        count_1++;
        if (count_1 == 1)
        {
            g1.setColor(Color.RED);
            g1.fillOval(137, 54, 20, 20);
        } else if (count_1 > 1)
        {
            g1.setColor(new Color(-3692899));
            g1.fillOval(66, 52, 20, 20);
            repaint();
            count_1 = 0;
        }
        g1.dispose();
    }
}
}   

clase de panel de imagen

public class ImagePanel extends JPanel{

private Image img;

public ImagePanel(String img, String str)
{
    //this(new ImageIcon(img).getImage());    
}

public ImagePanel(String path)
{
    Image img = new ImageIcon(path).getImage();
    this.img = img;
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);
    setSize(size);
    setLayout(null);

     try
    {
        BufferedImage image = ImageIO.read(new File(path));
        int rgb = image.getRGB(66, 52);
        System.out.println("Colour is: "+rgb);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g.drawImage(img, 0, 0, null);
}
}

¿Tienes alguna idea por favor?

Gracias .

Respuestas a la pregunta(1)

Su respuesta a la pregunta