Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Combobox+listener

Visualizzazione discussione

  1. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Per prendere l'elemento selezionato nel JComboBox puoi usare:

    codice:
    Tesserato tesserato = cmb.getItemAt (cmb.getSelectedIndex ());
    Questo codice ti assicura di avere in tesserato il reference dell'oggetto selezionato, o null se nessun elemento è stato selezionato.
    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:

    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.
        }
    });
    ...
    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).

    PS: Ho visto solo ora il messaggio di @andbin. Repetita iuvant
    Ultima modifica di Ansharja; 08-02-2018 a 17:46

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.