Como te dijo ivancea96,
Cuando se haga click que se guarde las coordenadas en un ArrayList, por cada elemento del arrayList se guardara un array de int, el cual contendra como primero valor la X y luego la Y, o bien puedes optar por crear una clase, Coordenada y obtenerlo desde una instancia.
Luego en el método paint, recorreras todo el arrayList con las coordenadas que se fue registrando.
Prueba este código:
Si quieres que los colores de cada circulo quede como era originalmente, deberás crear una clase que guarde dichos valores para luego ser pintado con el color que le corresponde a cada circulo, eso ya te lo dejo para ti.
Muchas gracias por comunicarse con foro el hacker que tenga buen día señor.
Cuando se haga click que se guarde las coordenadas en un ArrayList, por cada elemento del arrayList se guardara un array de int, el cual contendra como primero valor la X y luego la Y, o bien puedes optar por crear una clase, Coordenada y obtenerlo desde una instancia.
Luego en el método paint, recorreras todo el arrayList con las coordenadas que se fue registrando.
Prueba este código:
Código (java) [Seleccionar]
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 {
ArrayList<Integer[]> coordenadas;
int x;
int y;
int radio;
public Marco() {
this.coordenadas = new ArrayList<Integer[]>();
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);
coordenadas.add(new Integer[]{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)));
for(int i = 0; i < coordenadas.size(); i++) {
Ellipse2D circulo=new Ellipse2D.Float(coordenadas.get(i)[0]-radio, coordenadas.get(i)[1]-radio, radio*2, radio*2);
g2.fill(circulo);
}
}
class EventoMouse {
public EventoMouse(){
}
}
}
Si quieres que los colores de cada circulo quede como era originalmente, deberás crear una clase que guarde dichos valores para luego ser pintado con el color que le corresponde a cada circulo, eso ya te lo dejo para ti.
Muchas gracias por comunicarse con foro el hacker que tenga buen día señor.