2012-10-19 12 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()); 

Sto facendo qualcosa di molto semplice. Ho una JList. Se viene selezionato un elemento nell'elenco, viene chiamato il gestore. Il problema è che il gestore viene invocato due volte quando passo da un oggetto all'altro. Posso vedere l'uso se il primo trigger passa sull'elemento originale selezionato e il secondo trigger passa sul nuovo oggetto. Ma entrambe le volte, lo stesso nuovo oggetto è passato. Qual è il punto di questo ? C'è un modo per evitare che il gestore venga chiamato due volte?ListSelectionListener invocato due volte

risposta

25

e.getValueIsAdjusting è quello che stai cercando. Come indicato nel javadoc di tale metodo

Restituisce se questo è uno di una serie di eventi multipli, in cui i cambiamenti sono ancora in corso

+0

Quindi non stavo diventando pazzo, dopo tutto. Grazie per la risposta. – Michael