ListSelectionListener вызывается дважды

class MyListListener implements ListSelectionListener {

      public void valueChanged (ListSelectionEvent e) {
           JList source = (JList) e.getSource();
           // do something
      }
}

JList myList = new JList (myModel);  
myList.addListSelectionListener (new MyListListener());

Я делаю что-то очень простое. У меня есть JList. Если выбран элемент в списке, вызывается обработчик. Проблема заключается в том, что обработчик вызывается дважды, когда я перехожу от одного элемента к другому. Я могу увидеть использование, если первый триггер проходит по исходному выбранному элементу, а второй триггер передает новый элемент. Но оба раза, тот же новый элемент передается. В чем смысл этого? Есть ли способ предотвратить двойное вызов обработчика?

Ответы

Ответ 1

e.getValueIsAdjusting - это то, что вы ищете. Как указано в javadoc этого метода

Возвращает, является ли это одним из нескольких событий, когда изменения все еще выполняются