[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é.
- Inicie sesión o regístrese para enviar comentarios
Tal vez esto es lo que buscas
Tengo código que hace algo parecido a lo que quieres, te lo comparto y Saludos.