Domanda

Sto cercando di attivare un evento ogni volta che viene effettuata una scelta da a JComboBox.

Il problema che sto riscontrando è che non c'è nulla di ovvio addSelectionListener() metodo.

Ho provato a usare actionPerformed(), ma non si accende mai.

A meno di sovrascrivere il modello per il JComboBox, sono a corto di idee.

Come posso ricevere una notifica di una modifica della selezione su a JComboBox?**

Modificare: Devo scusarmi.Si scopre che stavo usando una sottoclasse che si comportava male di JComboBox, ma lascerò la domanda in sospeso poiché la tua risposta è buona.

È stato utile?

Soluzione

Dovrebbe rispondere ActionListeners, come questo:

combo.addActionListener (new ActionListener () {
    public void actionPerformed(ActionEvent e) {
        doSomething();
    }
});

@John Calsbeek lo sottolinea giustamente addItemListener() funzionerà anch'esso.Potresti ottenerne 2 ItemEvents, però, uno per la deselezione dell'elemento precedentemente selezionato, ed un altro per la selezione del nuovo elemento.Basta non utilizzare entrambi i tipi di eventi!

Altri suggerimenti

Esempio di codice di ItemListener implementazione

class ItemChangeListener implements ItemListener{
    @Override
    public void itemStateChanged(ItemEvent event) {
       if (event.getStateChange() == ItemEvent.SELECTED) {
          Object item = event.getItem();
          // do something with object
       }
    }       
}

Ora otterremo solo l'elemento selezionato.

Quindi aggiungi semplicemente il listener al tuo JComboBox

addItemListener(new ItemChangeListener());

Vorrei provare il itemStateChanged() metodo del ItemListener interfaccia se la soluzione di Jodonnell fallisce.

Ecco la creazione di un ComboBox che aggiunge un ascoltatore per la modifica della selezione dell'elemento:

    JComboBox comboBox = new JComboBox();

    comboBox.setBounds(84, 45, 150, 20);
    contentPane.add(comboBox);

    JComboBox comboBox_1 = new JComboBox();
    comboBox_1.setBounds(84, 97, 150, 20);
    contentPane.add(comboBox_1);
    comboBox.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent arg0) {
            //Do Something
        }
    });
}

Puoi provare questi

 int selectedIndex = myComboBox.getSelectedIndex();

-O-

Object selectedObject = myComboBox.getSelectedItem();

-O-

String selectedValue = myComboBox.getSelectedValue().toString();

Recentemente stavo cercando questa stessa soluzione e sono riuscito a trovarne una semplice senza assegnare variabili specifiche per l'ultimo elemento selezionato e il nuovo elemento selezionato.E questa domanda, sebbene molto utile, non ha fornito la soluzione di cui avevo bisogno.Questo ha risolto il mio problema, spero che risolva il tuo e quello degli altri.Grazie.

Come posso ottenere l'elemento precedente o l'ultimo?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top