radiobutton - radio button java eclipse
Detectando un cambio de estado de JRadioButton (3)
¿Cómo puedo detectar cuándo se cambia un JRadioButton de ''no seleccionado'' a ''seleccionado'' cuando se hace clic con el mouse? He intentado usar un ActionListener en el botón, pero se dispara cada vez que se hace clic en el botón de radio, no solo cuando está cambiando el estado a ''seleccionado''.
He pensado en mantener una variable booleana que recuerda el estado del botón, y probarlo dentro del ActionListener para ver si cambia su estado, pero me pregunto si hay una solución mucho mejor o más limpia.
Creo que quieres agregar una implementación ChangeListener
.
Mira JRadioButton. addItemListener ()
EDITAR: es poco probable que desee utilizar un changeListener ya que dispara varias veces por clic. Un itemListener se dispara solo una vez por clic. Mira aquí
EDIT2: solo para ampliar esto, se activará un actionListener en un jradioButton cada vez que un usuario haga clic en él, incluso si ya está seleccionado. si eso es lo que quieres, bien, pero me parece molesto. Solo quiero que se me notifique si está seleccionado o no seleccionado.
Un ChangeListener se activará para todo tipo de cosas, lo que significa que su oyente recibirá 5 o más eventos por clic. No está bien.
Un elemento que escuchará se disparará solo si el estado seleccionado o deseleccionado cambia. Esto significa que un usuario puede hacer clic en él varias veces y no se disparará si no cambia. En el método de su controlador, deberá tener un bloque if
para verificar el estado SELECTED
o DESELECTED
y hacer lo que allí se encuentre:
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
// Your selected code here.
}
else if (e.getStateChange() == ItemEvent.DESELECTED) {
// Your deselected code here.
}
}
Simplemente funciona mejor porque sabes que si estás en el método, entonces el botón de radio ha sido seleccionado o deseleccionado, no es que el usuario simplemente esté golpeando la interfaz por algún motivo desconocido.