Hola, estoy haciendo un pequeño programa en java el cual es que, cuando hagamos clic izquierdo sobre el Frame se dibuje un circulo, y al hacer otra vez clic se dibuje otro circulo, pero que el primer circulo no se borre y el segundo circulo cambie de color, y así hasta tapizar el Frame de círculos de diferentes colores.
Tengo el 80% del programa hecho, a excepción de que se almacenen los círculos.
Código del programa:
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(){
}
}
}
He estado investigando cómo hacer, pero no mas salgo confundido . . . Sé que se puede hacer con un ArrayList, pero no logro hacer que funciones.
Realmente espero y me puedan ayudar.