Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1542 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java][Swing] Double événement de sélection de valeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java][Swing] Double événement de sélection de valeur

n°499524
Krueger
tout salaire demande dutravail
Posté le 27-08-2003 à 12:32:36  profilanswer
 

Bonjour,
 
J'ai une JList auquelle j'ai spécifié une unique sélection possible. Le problème est que lorsqu'un élément est sélectionné, deux événements de sélection modifiée sont générés. Il y en a pourtant bien un seul lorsque le clavier est utilisé.
Alros j'ai viré tos les MouseListener et MouseMotionListener pour ajouter mon propre MouseListener. Rien n'y fait, toujours une double sélection. :??: Comment régler ce problème ?
 

Code :
  1. ...
  2.     this.list = new JList(listModel);
  3.     this.list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  4.     this.list.addListSelectionListener(new ListSelectionListener()
  5.     {
  6.       public void valueChanged(ListSelectionEvent event)
  7.       {
  8.         System.out.println("selected value : "
  9.           + list.getSelectedValue());
  10.       }
  11.     });
  12.    
  13.     // vire tous les mouse (motion) listeners
  14.     MouseListener[] listeners = this.list.getMouseListeners();
  15.     System.out.println("mouse listeners : " + listeners.length);
  16.     for(int i = 0; i != listeners.length; i++)
  17.     {
  18.       this.list.removeMouseListener(listeners[i]);
  19.     }
  20.     MouseMotionListener[] motionListeners = this.list.getMouseMotionListeners();
  21.     System.out.println("mouse motion listeners : " + listeners.length);
  22.     for(int i = 0; i != motionListeners.length; i++)
  23.     {
  24.       this.list.removeMouseMotionListener(motionListeners[i]);
  25.     }
  26.    
  27.     // ajoute un mouse listener personalisé
  28.     this.list.addMouseListener(new MouseListener()
  29.     {
  30.       private ListSelectionModel selectionModel = list.getSelectionModel();
  31.       public void mouseClicked(MouseEvent event)
  32.       {
  33.         int index = list.locationToIndex(event.getPoint());
  34.         if(index != -1)
  35.         {
  36.           selectionModel.setSelectionInterval(index, index);
  37.           System.out.println("mouse selection : " + list.getSelectedValue());
  38.         }
  39.       }
  40.       public void mousePressed(MouseEvent event)
  41.       {
  42.       }
  43.       public void mouseReleased(MouseEvent event)
  44.       {
  45.       }
  46.       public void mouseEntered(MouseEvent event)
  47.       {
  48.       }
  49.       public void mouseExited(MouseEvent event)
  50.       {
  51.       }
  52.     });
  53.     ...


Message édité par Krueger le 29-08-2003 à 15:21:29

---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
mood
Publicité
Posté le 27-08-2003 à 12:32:36  profilanswer
 

n°499595
ozark74
Posté le 27-08-2003 à 14:03:30  profilanswer
 

retrouvé ceci dans le code d'une applic faite il y a un certain temps :  
 

Code :
  1. rowSM.addListSelectionListener(new ListSelectionListener()
  2.         {
  3.             public void valueChanged(ListSelectionEvent e)
  4.                 {
  5.                     //Ignore extra messages.
  6.                     if (e.getValueIsAdjusting()) return;
  7.                            
  8.                     ListSelectionModel lsm = (ListSelectionModel)e.getSource();
  9.                     //selectedRow is selected
  10.                     if (!lsm.isSelectionEmpty())
  11.                     {
  12.                        //do someting
  13.                     }
  14.                        
  15.                 }
  16.         });


 
tu dos donc tester si e.getValueIsAdjusting() est true et ne pas tenir compte de ces events
 
quand tu cliques e.getValueIsAdjusting() est true
et quand tu relaches le bouton de la souris il devient false
 


Message édité par ozark74 le 27-08-2003 à 14:12:37
n°499614
Krueger
tout salaire demande dutravail
Posté le 27-08-2003 à 14:16:46  profilanswer
 

Merci beaucoup, ça marche. [:youpi]
J'avais vu la méthode mais j'ai lu trop vite la Javadoc pour mal l'utiliser ensuite. :sarcastic: Plus besoin de supprimer les mouse (motion) listeners.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java][Swing] Double événement de sélection de valeur

 

Sujets relatifs
[Java][Swing] Layout continu d'une fenêtre[Java] On maurait menti? (jdk)
Java/XML : Le Parser de Sun ?Interet de JAVA pour le web comparé au PHP ou a l'ASP
[Java] Conversion Jpg, Gif, Bmpvaleur d'un cookie [resolu] nv question voir msg 11
[swing] pb rafraichissement scrollpane[MySQL] Comment incrémenter une valeur contenue dans un tableau ??
Pb avec un formulaire à sélection multiple 
Plus de sujets relatifs à : [Java][Swing] Double événement de sélection de valeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR