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。如果选择了列表中的项,则调用该处理程序。问题是当我从一个项目转到另一个项目时,处理程序被调用两次。如果第一个触发器传递原始选定项目,我可以看到使用,第二个触发器传递新项目。但是两次都传递了相同的新项目。那是什么意思?有没有办法防止处理程序被调用两次?
答案 0 :(得分:29)
e.getValueIsAdjusting
正是您要找的。正如该方法的javadoc中所述
返回这是否是一系列多个事件中的一个,其中仍在进行更改
答案 1 :(得分:6)
这是常规方式,您必须使用getValueIsAdjusting()方法
进行过滤答案 2 :(得分:0)
如果你真的想防止这种情况发生,试试这个:
public void valueChanged (ListSelectionEvent e) {
JList source = (JList) e.getSource();
if(!e.getValueIsAdjusting()){
// do something
}
}