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.
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.