Ripeto: dimentica MouseEvent per gestire i tuoi N pulsanti. Ogni pulsante genera un ActionEvent che puoi trattare in un ActionListener. Questa è la soluzione migliore.Originariamente inviato da walkerjitzu
"A mouse action is considered to occur in a particular component if and only if the mouse cursor is over the unobscured part of the component's bounds when the action happens. Component bounds can be obscurred by the visible component's children or by a menu or by a top-level window"
Poi come fare qualcosa di differente (o con dati differenti) a seconda del pulsante .... ci sono svariati approcci. Cito ora quelli che mi vengono in mente:
1) registrare lo stesso ActionListener per tutti i pulsanti, poi si distingue il pulsante dal "source" dell'evento:
Object source = event.getSource();
if (source == pulsanteA) { fai_questo; }
else if (source == pulsanteB) { fai_quest'altro; }
.....
chiaramente richiede di tenersi i riferimenti a tutti i pulsanti e non è molto "generico" quindi.
Se quello che deve differire da un pulsante all'altro è poter ottenere uno o più valori differenti, allora:
2) si estende JButton, es. MyButton, e si definiscono delle proprietà in più. Poi si registra lo stesso listener e l'oggetto source lo si "casta" al MyButton (presupponendo che si sappia a priori che il source saranno solo quei tuoi pulsanti). Quindi si esaminano le proprietà aggiuntive.
3) si definisce un listener specifico che contiene delle proprietà aggiuntive, quindi per ogni pulsante si istanzia il listener con le proprietà specifiche e lo si assegna al pulsante. Nel actionPerformed quindi i dati utili provengono del listener, non dal pulsante.
4) si usa una mappa IdentityHashMap, i pulsanti sono le chiavi, i valori sono quello che ti pare (anche oggetti complessi). Nel listener, dall'evento si ottiene il source (il tuo pulsante) e si va a prendere i dati specifici dalla mappa.
Questi sono gli approcci che mi vengono in mente ... scegli tu i base a cosa devi fare di preciso.