ListSelectionListener 被调用两次

2022-09-01 14:21:07
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()方法进行过滤


推荐