Это происходит потому, что одно событие сообщает слушателю, что одна опция была отменена, , а следующее событие сообщает, что другая опция выбрана .
* 1006.* Вы можете выяснить, что на самом деле относится к событию, позвонив по номеру
evt.getStateChange()
.Он вернет либо
ItemEvent.SELECTED
, либо
ItemEvent.DESELECTED
.
Если вы измените "triggered"
на "triggered " + evt.getStateChange()
, вы увидите разницу, как при печати
triggered 2
triggered 1
Итак, есливас интересуют только события, в которых что-то было выбрано , которое вы могли бы добавить в начало реализации вашего слушателя
if (evt.getStateChange() == ItemEvent.DESELECTED)
return;
Вот фрагмент из документов по getStateChange()
:
Возвращает тип изменения состояния (выбранный или отмененный).
Возвращает: целое число, указывающее, был ли элемент выбран или отменен