Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/08/2014, 10:29
Avatar de farfamorA
farfamorA
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 14 años
Puntos: 24
Respuesta: addItem en JComboBox

Si estás manejando los eventos correctamente, el itemStateChanged (método del ItemListener) no debería invocarse.
Según la documentación:
Cita:
Invoked when an item has been selected or deselected by the user. The code written for this method performs the operations that need to occur when an item is selected (or deselected).
Te dejo un ejemplo listo para ejecutar:
Código Java:
Ver original
  1. package comboitemselect.ComboItemSelect;
  2.  
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.ItemEvent;
  6. import java.awt.event.ItemListener;
  7. import javax.swing.JButton;
  8. import javax.swing.JComboBox;
  9. import javax.swing.JFrame;
  10. import javax.swing.JLabel;
  11.  
  12. /**
  13.  *
  14.  * @author farfamorA
  15.  */
  16. public class MyFrame extends JFrame {
  17.    
  18.     private final JButton myButton;
  19.     private JComboBox myComboBox;
  20.     private JLabel myLabel;
  21.    
  22.     public MyFrame() {
  23.        
  24.         myComboBox = new javax.swing.JComboBox();
  25.         myLabel = new javax.swing.JLabel();
  26.         myButton = new javax.swing.JButton();
  27.  
  28.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  29.         getContentPane().setLayout(new java.awt.FlowLayout());
  30.  
  31.         myComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
  32.         getContentPane().add(myComboBox);
  33.  
  34.         myLabel.setText("(Sin valor)");
  35.         getContentPane().add(myLabel);
  36.  
  37.         myButton.setText("Agregar");
  38.         getContentPane().add(myButton);
  39.  
  40.         pack();
  41.        
  42.         myComboBox.addItemListener(new ItemListener() {
  43.             @Override
  44.             public void itemStateChanged(ItemEvent e) {
  45.                 if (e.getStateChange() == java.awt.event.ItemEvent.SELECTED) {
  46.                     myLabel.setText(myComboBox.getSelectedItem().toString());
  47.                     System.out.println("myComboBox.itemStateChanged");
  48.                 }
  49.             }
  50.         });
  51.         myButton.addActionListener(new ActionListener() {
  52.             @Override
  53.             public void actionPerformed(ActionEvent e) {
  54.                 myComboBox.addItem("Item " + (myComboBox.getItemCount()+1));
  55.             }
  56.         });
  57.     }
  58.    
  59.     public static void main(String args[]) {
  60.         java.awt.EventQueue.invokeLater(new Runnable() {
  61.             @Override
  62.             public void run() {
  63.                 new MainFrame().setVisible(true);
  64.             }
  65.         });
  66.     }
  67.    
  68. }
Como verás, cuando se pulsa el botón, se añaden items al combo. Sin embargo, el evento de item seleccionado no se dispara sino hasta que efectivamente selecciones un item.