¿Puede alguien explicarme por qué este código se imprime en la consola cuando mueve el mouse sobre la casilla de verificación? ¿Cuál es el evento de "cambio" que tiene lugar?JCheckbox change listener recibe una notificación de mouse sobre eventos
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Test {
public static void main(String[] args) {
JFrame f = new JFrame();
JCheckBox c = new JCheckBox("Print HELLO");
c.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
System.out.println("HELLO");
}
});
f.getContentPane().add(c);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
}
NOTA: No consumo un oyente de action porque en mi programa que quiero ser capaz de hacer:
checkBox.setSelected(boolean)
y tener mi oyente notificado, que no se puede hacer con una oyente de acción. Entonces, ¿hay alguna manera de desactivar este evento "mouse over" u otra forma en que pueda implementar mi escucha?
Impar, pensé que usar 'setSelected' activaría los oyentes de cambio. Debo estar pensando en otra cosa. – jeef3
Si ejecuto eso en Java 5 en Mac OSX, no obtengo el mouse sobre los eventos. – banjollity
@ jeef3: setSelected DOES activa eventos de cambio. Es por eso que lo estoy usando. La cosa es que los eventos de cambio también se desencadenan con el mouse sobre los movimientos :) –