java - setmodel - ¿Qué hace getValueIsAdjusting exactamente?
setmodel java (2)
Como el javadoc que JB Nizet vincula a los estados, getValueIsAdjusting()
verifica si un evento específico (un cambio) es parte de una cadena, si es así, se devolverá como true
. Solo devolverá false
cuando el evento especificado sea el último en la cadena.
En su caso, seleccionar una fila haciendo clic en realidad dispara dos eventos: un evento mouseDown
y mouseUp
y ambos se envían al detector de eventos. Si implementa correctamente getValueIsAdjusting()
para devolver siempre que el valor sea true
, solo actuará en el evento final de la cadena, que es el evento mouseUp
que se activa al soltar el botón izquierdo del mouse.
Los Tutoriales de Java incluyen un ejemplo que captura eventos, puede usarlo para registrar los eventos de selección y experimentar con usted. Elimine el retorno de la event.getValueIsAdjusting()
para registrar cada evento que se active.
He estado investigando esta pregunta, pero no he encontrado una respuesta que me satisfaga. Como usted sabe, sin usar !getValueIsAdjusting
cuando selecciona una fila en un jtable (haciendo clic), el evento de cambio de selección se activará dos veces. No sucede si selecciona una fila usando la flecha del teclado. Para resolverlo, verifica si getValueIsAdjusting
devuelve falso.
Mi pregunta es por qué el evento se dispara dos veces si selecciono una fila haciendo clic en ella, pero no cuando uso la flecha del teclado? ¿Y qué hace getValueIsAdjusting para resolverlo?
¡Gracias de antemano! :RE
String interessen[]= {"aaaaaaa", "bbbbbbbb", "ccccccccc", "ddddddd"};
myList = new JList<>(interessen);
myList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if(!e.getValueIsAdjusting())
System.out.println(myList.getSelectedValue());
}
});
El código anterior muestra lo que getValueIsAdjusting hacer, sin estos métodos un evento se puede llamar, por ejemplo. dos veces (depende del evento).
Salida sin bucle getValueIsAdjusting después de hacer clic en algún elemento de JList: aaaaaaa aaaaaaa
con lazo: aaaaaaa