
Originariamente inviata da
Antonio181926
Non so come far selezionare al clicklistener l'elemento che seleziono nella combobox. Vi ringrazio anticipatamente

Il punto/problema è che la variabile cmb è "locale" al costruttore. E la inner-class ClickListenerSeleziona non ha alcun appiglio per accederci.
Si risolve in diversi modi, cambiando un po' il design.
Banalmente ad esempio mettendo la implementazione di ActionListener come anonymous inner-class nel costruttore:
codice:
public Grafica(Squadra c) {
// .......
JComboBox<Tesserato> cmb = new JComboBox<Tesserato>();
JButton button = new JButton("Calcola");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
Tesserato tesseratoSelezionato = (Tesserato) cmb.getSelectedItem();
// .......
}
});
// .......
}
Se actionPerformed è relativamente breve (poche righe) può andare bene.
Altrimenti si può cambiare il design maggiormente e più in generale. Il JComboBox ti potrebbe servire in altri punti della classe, oltre al costruttore. Così come gli altri componenti.
Allora tieni i componenti come variabili di istanza della classe.
codice:
public class Grafica {
private JFrame frame;
// .....
private JComboBox<Tesserato> cmb;
public Grafica(Squadra c) {
frame = new JFrame();
// .....
cmb = new JComboBox<Tesserato>();
// .....
}
private class ClickListenerSeleziona implements ActionListener {
public void actionPerformed(ActionEvent event) {
// qui PUOI usare cmb
}
}
}