Foros del Web » Programación para mayores de 30 ;) » Java »

JList capta el evento dos veces

Estas en el tema de JList capta el evento dos veces en el foro de Java en Foros del Web. ¡Hola!. Vereis, he creado un JList, con ciertos elementos. He añadido el Listener para comprobar cuando ha cambiado el JList... pero cuando pulso sobre él, ...
  #1 (permalink)  
Antiguo 17/10/2009, 19:14
 
Fecha de Ingreso: marzo-2006
Mensajes: 106
Antigüedad: 18 años, 2 meses
Puntos: 0
JList capta el evento dos veces

¡Hola!.

Vereis, he creado un JList, con ciertos elementos. He añadido el Listener para comprobar cuando ha cambiado el JList... pero cuando pulso sobre él, ¡me lo detecta dos veces!. Osea, como si hubiese cambiado dos veces seguidas. Pero cuando muevo los cursores del ratón solo me lo detecta una vez.

Os muestro mejor el código, y lo explico:

Código:
public class Mi clase implements ListSelectionListener {
DefaultListModel def = new DefaultListModel();
JList lista = new JList(def);
lista.addListSelectionListener(this);

 public void valueChanged(ListSelectionEvent e) {
        if (e.getSource() == projects) {
            int selectedIndex = projects.getSelectedIndex();
            System.out.println("Repite este mensaje"+selectedIndex);
        } else {
            
        }
    }

}
Bueno, pues el mensaje dentro de valueChanged me lo repite dos veces, como si hubiese pulsado dos veces seguidas. Y lo único que hago es seleccionar un elemento de la lista con el ratón. ¿Hay alguna forma de que lo detecte solo una vez pulsando con el ratón?.

Un saludo y gracias.
__________________
"El río más profundo siempre es el más silencioso"
  #2 (permalink)  
Antiguo 18/10/2009, 14:56
MIRL27
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: JList capta el evento dos veces

A mi me sucedió lo mismo en un proyecto y tomé la decisión de capturar los eventos "MouseClicked" y "KeyReleased" dentro del JList
  #3 (permalink)  
Antiguo 11/09/2011, 16:49
Avatar de shujidan  
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 5
Respuesta: JList capta el evento dos veces

La bandera isAdjusting es true si el usuario todavía está manipulando la selección, y false si el usuario ha terminado de modificar la selección.

Código Java:
Ver original
  1. jlist.addListSelectionListener(new ListSelectionListener() {
  2.     public void valueChanged(ListSelectionEvent lse) {
  3.         if (lse.getValueIsAdjusting()) System.out.println("opcion siendo seleccionada");
  4.         else System.out.println("opcion dejo de ser seleccionada");
  5.     }
  6. });
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.