Le coordinate le prendi esattamente come fai adesso, solo che aggiungi un unico MouseAdapter al pannello e non uno per ogni circleElement come fai adesso (e tra l'altro ora ne aggiungi n ad ogni volta che il metodo paintComponent viene richiamato, come detto non va affatto bene).
Ora utilizzi un unico ciclo all'interno del paintComponent : per ogni circleElement effettui il disegno, e poi aggiungi al pannello un mouseListener che usa le "x" e "y" del circleElement che leggi nel ciclo esterno.
Devi cambiare questa parte: nel paintComponent rimuovi la parte relativa al mouseListener, e lo aggiungi una sola volta al pannello.
All'interno del mousePressed farai un nuovo ciclo in cui per ogni circleElement leggi la x e la y ed effettui quel controllo per vedere se il punto è compreso all'interno.
Se vuoi fare il controllo usando lo stesso circleElement invece che l'immagine, va bene, ma finché usi un rettangolo o un cerchio è facile controllare se il punto è all'interno, se la forma geometrica è più complessa ovviamente aumenta anche la complessità di questa parte.
Per un cerchio basta controllare se la distanza del punto cliccato dal centro del circleElement è minore o meno del raggio...


Rispondi quotando
