Событие JComboBox itemStateChanged, вызываемое дважды за раз

resultCombo = new JComboBox(); resultCombo.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent ie) { sampleText=resultCombo.getSelectedItem().toString(); System.out.println("SampleText : "+sampleText); } }); output: SampleText : selectedword SampleText : selectedword 

Почему это событие вызывается дважды при выборе элемента в combobox.?

JComoboBox ItemListener вызывается дважды для одного изменения. Один раз для события SELECTED и один раз для события DESERECTED.

См. Эту страницу учебника о том, как написать ItemListener.

В основном, что вам нужно сделать, это

 public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { //Do any operations you need to do when an item is selected. } else if(e.getStateChange() == ItemEvent.DESELECTED){ //Do any operations you need to do when an item is de-selected. } } 

Основываясь на документации ItemListener

Вызывается, когда элемент был выбран или отменен пользователем. Код, написанный для этого метода, выполняет операции, которые должны выполняться, когда элемент выбран (или отменен).

Это предполагает, что вы получите событие, когда элемент отменен или выбран. Если изменить выбранный элемент в поле со списком, необходимо сначала удалить выделенный элемент, поэтому вам будет необходимо, чтобы вы получили ItemEvent.DESELECTED и ItemEvent.SELECTED