ListSelectionListener 调用了两次
Posted
技术标签:
【中文标题】ListSelectionListener 调用了两次【英文标题】:ListSelectionListener invoked twice 【发布时间】:2012-10-10 03:20:54 【问题描述】: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中所述
返回这是否是一系列多个事件中的一个,其中仍在进行更改
【讨论】:
所以我并没有发疯。感谢您的回答。【参考方案2】:这是正常的方法,你必须用getValueIsAdjusting()方法过滤
【讨论】:
【参考方案3】:如果你真的想防止这种情况发生,试试这个:
public void valueChanged (ListSelectionEvent e)
JList source = (JList) e.getSource();
if(!e.getValueIsAdjusting())
// do something
【讨论】:
以上是关于ListSelectionListener 调用了两次的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在java swing中从ListSelectionEvents中提取字符串?
tomcat服务器启动,Filter 的构造函数被调用了两次,doFilter函数调用了一次,
未调用 UIcollectionView 的 didDeselectItemAt 但调用了 didSelectItemAt?