[Java] Utilizar un ArrayList en un JFrame

Hola, estoy realizando un pequeño programa, el cual consiste en que, al hacer clic en un panel se dibuje un circulo, y cuando se vuelva hacer clic, se dibuje otro círculos de otro color, pero sin que se borre el primer circulo, y así hasta tapizar el panel de círculos de diferentes colores.

Mi pregunta es, ¿como almacenar los círculos en la memoria, para que no se borren?, ya tengo el evento del clic y que los círculos cambien de color, he estado investigando como hacer esto, tengo entendido que se puede hacer con un ArrayList o con un Vector.

Mi codigo:


package Graficos;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsEnvironment;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Graficos2D {
public static void main(String[] args) {
Marco NewMarco = new Marco();
NewMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class Marco extends JFrame {
int x;
       int y;
       int radio;
public Marco() {
setVisible(true);
setSize(500,500);
x = getSize().width/2;
               y = getSize().height/2;
setTitle("Dibujando Circulos");
       addMouseListener(new MouseAdapter(){
           @Override
           public void mouseClicked(MouseEvent e) {
               super.mouseMoved(e);
               x=e.getX();
               y=e.getY();
               repaint();
           }
       });
}
@Override
public void paint(Graphics g) {
super.paint(g);
               radio = 25;
Random r = new Random();
Graphics2D g2=(Graphics2D) g;
g2.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
Ellipse2D circulo=new Ellipse2D.Float(x-radio, y-radio, radio*2, radio*2);
g2.fill(circulo);
}
       class EventoMouse {
           public EventoMouse(){
           }
       }
}

Con toda sinceridad, he estado haciendo este programa por una semana, y he buscado por todas partes, la verdad no espero que la respuesta me caiga del cielo, si conocen una pagina o un tutorial se los agradeceré, oh si pueden explicarme como realizarlo se los agradeceré.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de adrianaaae

Tal vez esto es lo que buscas

Tengo código que hace algo parecido a lo que quieres, te lo comparto y Saludos.