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。 如果选择了列表中的项,则调用该处理程序。 问题是当我从一个项目转到另一个项目时,处理程序被调用两次。 如果第一个触发器传递原始选定项目,我可以看到使用,第二个触发器传递新项目。 但两次都会传递相同的新项目。 那是什么意思? 有没有办法阻止处理程序被调用两次?

e.getValueIsAdjusting就是你要找的。 正如该方法的javadoc所述

返回这是否是一系列多个事件中的一个,其中仍在进行更改

这是正常的方法,你必须使用getValueIsAdjusting()方法进行过滤