itemstatechanged item initialize how hacer event change java swing jcombobox itemlistener

java - item - JComboBox Selection Change Listener?



jcombobox java events (6)

Aquí está creando un ComboBox añadiendo un oyente para el cambio de selección de elementos:

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

JComboBox un evento cada vez que se JComboBox una JComboBox .

El problema que tengo es que no hay un addSelectionListener() obvio addSelectionListener() .

Intenté usar actionPerformed() pero nunca se dispara.

A menos que anule el modelo de JComboBox me he JComboBox sin ideas.

¿Cómo me notifican de un cambio de selección en un JComboBox ?

Editar: Tengo que disculparme porque resultó que estaba usando una subclase de JComboBox mal, pero dejaré la pregunta porque tu respuesta es buena. Comience a votar abajo. :)


Debería responder a ActionListeners , así:

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

@ John Calsbeek señala acertadamente que addItemListener() también funcionará. ItemEvents embargo, puede obtener 2 ItemEvents , uno para anular la selección del elemento seleccionado anteriormente, y otro para la selección del nuevo elemento. ¡Simplemente no use ambos tipos de eventos!


Ejemplo de código de implementación de ItemListener

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

Ahora obtendremos solo el elemento seleccionado.

Luego solo agrega oyente a tu JComboBox

addItemListener(new ItemChangeListener());


Hace poco estuve buscando esta misma solución y logré encontrar una simple sin asignar variables específicas para el último elemento seleccionado y el nuevo elemento seleccionado. Y esta pregunta, aunque fue muy útil, no proporcionó la solución que necesitaba. Esto resolvió mi problema, espero que solucione el tuyo y el de los demás. Gracias.

¿Cómo obtengo el artículo anterior o el último?


Puedes probar estos

int selectedIndex = myComboBox.getSelectedIndex();

-o-

Object selectedObject = myComboBox.getSelectedItem();

-o-

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


itemStateChanged() método itemStateChanged() de la interfaz ItemListener si falla la solución de jodonnell.