2015-11-07 3 views
2

У меня есть JComboBox настройки, как показано ниже:Использование переключателя заявление для JComboBox

private String[] boxChoices = {"option 1", "option 2"}; 
JcomboBox box = new JCombobox(boxChoices); 

box.addItemListener() 
{ 
    public void itemStateChanged(ItemEvent event) 
    { 
     int selection = box.getSelectedIndex(); 
     switch (selection) 
     { 
      case 0: JOptionPane.showMessageDialog(null, "you have selected option 1"); 
       break; 
      case 1: JOptionPane.showMessageDialog(null, "you have selected option 2"); 
       break; 
      default: break; 
     } 
    } 
} 

Моя проблема заключается в том, что, когда я выбираю опцию сообщение будет показано в два раза, а не один раз. Например, если я выберу вариант 1, появится следующее:

you have selected option 1 
you have selected option 1 

Что вызывает это?

+0

Возможно, вы можете отредактировать это, вставив в свой код? Это требует нескольких изменений перед компиляцией. –

ответ

0

В дополнение к ответу @ Blip вы также можете использовать actionListener. ActionEvent для JComboBox запускается только один раз, когда вы меняете выбор.

box.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent event) { 

      int selection = box.getSelectedIndex(); 
      switch (selection) { 
       case 0: 
        JOptionPane.showMessageDialog(null, "you have selected option 1"); 
        break; 
       case 1: 
        JOptionPane.showMessageDialog(null, "you have selected option 2"); 
        break; 
       default: 
        break; 
      } 
     } 
    }); 
0

Я не уверен, но это может быть потому, что вы используете анонимного слушателя.

Внесите ItemListener и добавьте его.

1

Такое поведение возникает, потому что прослушиватель товаров вызывается 2 раза из-за выбора любого элемента в JComboBox. Первый вызван для отмены выделения ранее выбранного элемента, а во второй раз для выбора нового элемента.

Вы можете фильтровать это, используя пункт if, чтобы отразить реальное событие, которое вы хотите, чтобы поймать то есть выбор или отмена выбора:

if(event.getStateChange() == ItemEvent.SELECTED) 

ИЛИ

if(event.getStateChange() == ItemEvent.DESELECTED) 

на основе ваших предпочтений выбора государства вы хотите ловушку.

Смежные вопросы