2012-10-19 132 views
16
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。如果列表中的項目被選中,則處理程序被調用。問題是當我從一個項目轉到另一個項目時,處理程序被調用兩次。如果第一個觸發器傳遞了原始選定項目,並且第二個觸發器傳遞了新項目,我可以看到使用情況。但是這兩次,同一個新項目都通過了。那是什麼意思?有沒有辦法阻止處理程序被調用兩次?ListSelectionListener被調用兩次

回答

25

e.getValueIsAdjusting是你在找什麼。如該方法的Javadoc指出

返回是否這是一個在一系列的多個事件,其中的變化仍在做

+0

所以我沒有發瘋。感謝你的回答。 – Michael