package swing;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class WindowsPainter extends JFrame {

	private int contagemPontos = 0;
	private Point[] pontos = new Point[10000];
	private Random random = new Random();
	private int cr, cg, cb;
	
	public WindowsPainter() {
		setBackground(new Color(0, 0, 0, 1));
		setSize(Toolkit.getDefaultToolkit().getScreenSize());
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		// classe interna anonima
		addMouseMotionListener(new MouseMotionAdapter() { 
			// armazena coordenadas de arrastar e repinta
			public void mouseDragged(MouseEvent e) {
				if (contagemPontos < pontos.length) {
					pontos[contagemPontos] = e.getPoint(); // obtem o ponto
					contagemPontos++;
					repaint();
				}
			}
		});

        JPanel painel = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
            	
        		// desenha todos os pontos no array
        		for (int i = 0; i < contagemPontos; i++) {
        			cr = random.nextInt(256);
        			cg = random.nextInt(256);
        			cb = random.nextInt(256);
        			g.setColor(new Color(cr, cg, cb));
        			g.fillOval(pontos[i].x, pontos[i].y, 40, 40);
        			g.fillOval(pontos[i].x, pontos[i].y, 4, 4);
        		}
            }
        };
        
        setContentPane(painel);
        setVisible(true);
	}

	public static void main(String[] args) {
		setDefaultLookAndFeelDecorated(true);
		new WindowsPainter();
	}
}
