Pbl JList ListSelectionEvent

Faatalis Messages postés 74 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 30 juillet 2010 - 13 févr. 2008 à 20:38
Faatalis Messages postés 74 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 30 juillet 2010 - 14 févr. 2008 à 18:44
Bonsoir

Je cherche à utiliser une JList, dans l'ensemble j'y arrive.

Mon problème arrive quand je souhaite supprimer l'élément séléctionné,
J'utilise : "ModeleCouleur.removeElement(listeCouleur.getSelectedValue());"

ModeleCouleur étant mon DefaultListModel(),
et listeCouleur ma JList.

ça, ça fonctionne !!

Sauf si j'utilise un ListSelectionEvent (dont j'ai besoin).

Code de mon ListSelectionEvent :

 listeCouleur.addListSelectionListener(
         new ListSelectionListener() {
            public void valueChanged( ListSelectionEvent e ) 
            {
               c.setBackground(
                  couleurs[ listeCouleur.getSelectedIndex() ] );
            }
         }
      );

Dans ce cas, il me met une exception quand je veux supprimer :
ArrayIndexOutOfBoundsException : -1

Je suppose que supprimer l'élement séléctionné notifi un changement dans la JList,
mais que, puisqu'il a été supprimé, le ListSelectionEvent ne trouve pas l'élément.

J'éspère être clair.

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
14 févr. 2008 à 07:12
Salut,

Y'a un truc que je comprends pas trop : d'un côté tu fais : listeCouleur.getSelectedValue() histoire de supprimer la couleur sélectionnée

Et dans ton listener : listeCouleur.getSelectedIndex() histoire de récupèrer l'index sélectionné... mais si tu supprime une ligne, il n'y a plus d'index sélectionné, et donc getSelectedIndex() doit te renvoyer -1, d'où cette erreur je pense !

Fais donc :
 listeCouleur.addListSelectionListener(
         new ListSelectionListener() {
            public void valueChanged( ListSelectionEvent e ) 
            {
                if (listeCouleur.getSelectedIndex() >= 0) {      
                   c.setBackground(couleurs[ listeCouleur.getSelectedIndex() ] );
                }
            }
         }
      );
______________________________________
DarK Sidious
0
Faatalis Messages postés 74 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 30 juillet 2010
14 févr. 2008 à 18:44
Salut

Merci pour l'info, c'est ce qu'il me fallait.
J'avais pensé à récupérer la valeur dans un Int,
et utiliser un clearSelection().
Mais ton système est nickel !!

Sinon, y a t'il un moyen de savoir
si un élément (n'importe lequel) de la JList est séléctionné,
ou si aucun ne l'est.
L'idée est d'activer ou de désactiver le bouton de suppresion.

Merci d'avance.
0
Rejoignez-nous