maty ha scritto:
public class MillionaireButton extends JButton {
Come immaginavo ....
maty ha scritto:
Se non ho capito male il punto della situazione è proprio quella variabile di istanza "public Answer answer;".
Questa è una questione (non c'entra il source).
La classe ha una variabile di istanza ("campo", detto brevemente) che è
pubblico, quindi è accessibile direttamente. Se si ha il riferimento (non null) ad un oggetto MillionaireButton, quindi è possibile fare
oggMillionaireButton
.answer
(oggMillionaireButton è solo un ipotetico nome di variabile, non conta)
maty ha scritto:
Quindi, il succo della questione è : il getSource() va a "vedere" quale pulsante è stato premuto
Una implementazione di un listener (e come caso più particolare anche la
medesima istanza del listener) potrebbe essere registrata su più pulsanti.
Poter avere il source, cioè il componente che ha scatenato l'evento ti permette di fare 2 cose:
- distinguere quale tra gli N pulsanti è quello dell'evento, SE dovessi fare cose "diverse" per ciascun pulsante.
- fare una certa cosa su quel source senza dover sapere quale tra gli N sia (è il tuo caso: prendi l'answer dal pulsante cliccato, quale sia non importa).
maty ha scritto:
lo converte forzatamente (cast) ad un MillionaireButton
Sì, perché getSource() è generalizzato ed ha come tipo di ritorno un java.lang.Object. Sei tu che devi "sapere" quale tipo ti aspetti e quindi fare un cast esplicito.
maty ha scritto:
Poi di questo oggetto button vado a "prendere" la sua variabile parametro "answer" tramite quel button.answer creando così la variabile answer di tipo Answer. Successivamente prendo questa nuova variabile e la do "in pasto" all'handleAnswer.
Ho capito bene?
Sì, sostanzialmente è così.