Qualcuno può spiegarmi perché questo codice viene stampato sulla console quando si sposta il mouse sulla casella di controllo? Qual è l'evento "change" che si verifica?JCheckbox change listener riceve notifica del mouse sugli eventi
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: Non faccio uso di un listener di azione perché nel mio programma io voglio essere in grado di fare:
checkBox.setSelected(boolean)
e avere il mio ascoltatore notificato, che non può essere fatto con un ascoltatore di azioni. Quindi c'è un modo per disabilitare questo evento "mouse over" o un altro modo in cui posso implementare il mio listener?
Strano, pensavo che l'uso di "setSelected" avrebbe innescato il cambiamento degli ascoltatori. Devo pensare a qualcos'altro. – jeef3
Se lo eseguo su Java 5 su Mac OSX non riesco a passare il mouse sugli eventi. – banjollity
@ jeef3: setSelected Fa gli eventi di cambio trigger. Ecco perché lo sto usando. Il fatto è che gli eventi di cambiamento vengono attivati anche da movimenti del mouse sopra :) –