Per prendere l'elemento selezionato nel JComboBox puoi usare:
Questo codice ti assicura di avere in tesserato il reference dell'oggetto selezionato, o null se nessun elemento è stato selezionato.codice:Tesserato tesserato = cmb.getItemAt (cmb.getSelectedIndex ());
Esiste anche il metodo getSelectedItem (), che ritorna però un Object, devi quindi fare un cast (che va bene comunque).
La difficoltà maggiore comunque è rappresentata dal fatto che la tua classe ClickListenerSeleziona non ha il riferimento del JComboBox.
Potresti anche passarglielo nel costruttore, ma non sarebbe un buon design.
La soluzione più semplice (e secondo me anche pulita) è aggiungere come ascoltatore del pulsante una classe "anonima", che quindi ha accesso al combobox nel costruttore della classe Grafica:
L'unica limitazione è che cmb deve essere "effectively final" (cioè non puoi assegnarci un altro oggetto) visto che è usato all'interno di un'inner class (con java <= 7 sei invece costretto a dichiarare cmb come final).codice:JComboBox <Tesserato> cmb = new JComboBox <Tesserato> (); ... JButton button = new JButton ("Calcola"); button.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent event) { Tesserato tesserato = cmb.getItemAt (cmb.getSelectedIndex ()); // ... Fai quello che vuoi con tesserato. } }); ...
PS: Ho visto solo ora il messaggio di @andbin. Repetita iuvant![]()

Rispondi quotando