Pregunta

Estoy tratando de hacer que un evento se active cada vez que se hace una elección desde un JComboBox.

El problema que tengo es que no hay nada obvio. addSelectionListener() método.

He intentado usar actionPerformed(), pero nunca dispara.

A falta de anular el modelo para el JComboBox, se me acabaron las ideas.

¿Cómo recibo notificaciones de un cambio de selección en un JComboBox?**

Editar: Tengo que disculparme.Resulta que estaba usando una subclase de mal comportamiento de JComboBox, pero dejaré la pregunta ya que tu respuesta es buena.

¿Fue útil?

Solución

Debe responder a Oyentes de acción, como esto:

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

@John Calsbeek señala con razón que addItemListener() también funcionará.Puedes conseguir 2 ItemEvents, Sin embargo, uno para la deselección del elemento previamente seleccionado y otro para la selección del nuevo elemento.¡Simplemente no uses ambos tipos de eventos!

Otros consejos

Ejemplo de código de ItemListener implementación

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 simplemente agregue el oyente a su JComboBox

addItemListener(new ItemChangeListener());

yo probaría el itemStateChanged() método de la ItemListener interfaz si la solución de jodonnell falla.

Aquí se crea un ComboBox que agrega 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
        }
    });
}

Puedes probar estos

 int selectedIndex = myComboBox.getSelectedIndex();

-o-

Object selectedObject = myComboBox.getSelectedItem();

-o-

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

Recientemente 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 muy útil, no me proporcionó la solución que necesitaba.Esto resolvió mi problema, espero que resuelva el tuyo y el de los demás.Gracias.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top