import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.util.ArrayList;

public class Bulles {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Bulles");
        Aquarium panel = new Aquarium(800, 600);
        frame.getContentPane().add(panel);
        // frame.addMouseListener(panel);  // position relative to the window...
        frame.getContentPane().addMouseListener(panel);
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

class Aquarium extends JPanel implements MouseListener {
    private ArrayList<Bulle> bulles;
    public Aquarium(int l, int h) {
        this.bulles = new ArrayList<>();
        setBackground(new Color(161, 202, 241));
        setPreferredSize(new Dimension(l, h));
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(new Color(255, 255, 255, 127));  // RVB + Transparence
        for (Bulle b : bulles) {
            g.fillOval(b.x - b.r, b.y - b.r, 2 * b.r, 2 * b.r);
        }
    }

    public void mouseClicked(MouseEvent e) {
        bulles.add(new Bulle(e.getX(), e.getY(), 20));
        this.repaint();
    }

    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
}

class Bulle {
    public final int x, y, r;
    public Bulle(int x, int y, int r) {
        this.x = x;
        this.y = y;
        this.r = r;
    }
}
