2010-11-12 5 views
4

Ma situation est la suivante: J'ai un JList qui déclenche une recherche (en utilisant ListSelectionListener) chaque fois qu'une sélection est faite dans la liste. J'essaie de réinitialiser la sélection sur la liste, en utilisant list.clearSelection(). Le problème avec ceci est que l'utilisation clearSelection() déclenche l'écouteur, qui appelle la recherche: pas bon.Java Swing: Effacer JList sans déclencher d'écoute

Existe-t-il un moyen d'effacer la sélection dans la liste sans que l'écouteur ne soit déclenché? Serait-ce un indice que je n'utilise pas correctement l'auditeur? En général cependant, pouvez-vous changer quelque chose dans une interface utilisateur de Swing sans déclencher des événements associés à cet élément?

Merci.

Répondre

4

Lire la section du tutoriel Swing sur How to Write a List Selection Listener pour une démo de travail.

Normalement, deux événements sont générés, un pour la désélection et un pour la sélection. Vous devriez seulement faire votre recherche quand quelque chose est sélectionné. Vous devriez également être en mesure de vérifier l'index sélectionné qui devrait être quelque chose d'autre que -1 je crois.

+0

Merci, qui a travaillé. Je viens de vérifier pour voir si le selectedIndex était <0. –

0

Essayez motif suivant lors de l'utilisation méthode claire() pour effacer JList:

ListObjectName.addListSelectionListener(new ListSelectionListener() { 

    public void valueChanged(ListSelectionEvent e) { 
    if (!e.getValueIsAdjusting()){ 
     if(ListObjectName.getSelectedIndex()>-1){ 
     //Your Code 
     } 
    } 
    } 
});