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 :
- ...
- this.list = new JList(listModel);
- this.list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- this.list.addListSelectionListener(new ListSelectionListener()
- {
- public void valueChanged(ListSelectionEvent event)
- {
- System.out.println("selected value : "
- + list.getSelectedValue());
- }
- });
-
- // vire tous les mouse (motion) listeners
- MouseListener[] listeners = this.list.getMouseListeners();
- System.out.println("mouse listeners : " + listeners.length);
- for(int i = 0; i != listeners.length; i++)
- {
- this.list.removeMouseListener(listeners[i]);
- }
- MouseMotionListener[] motionListeners = this.list.getMouseMotionListeners();
- System.out.println("mouse motion listeners : " + listeners.length);
- for(int i = 0; i != motionListeners.length; i++)
- {
- this.list.removeMouseMotionListener(motionListeners[i]);
- }
-
- // ajoute un mouse listener personalisé
- this.list.addMouseListener(new MouseListener()
- {
- private ListSelectionModel selectionModel = list.getSelectionModel();
- public void mouseClicked(MouseEvent event)
- {
- int index = list.locationToIndex(event.getPoint());
- if(index != -1)
- {
- selectionModel.setSelectionInterval(index, index);
- System.out.println("mouse selection : " + list.getSelectedValue());
- }
- }
- public void mousePressed(MouseEvent event)
- {
- }
- public void mouseReleased(MouseEvent event)
- {
- }
- public void mouseEntered(MouseEvent event)
- {
- }
- public void mouseExited(MouseEvent event)
- {
- }
- });
- ...
|
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