Pregunta

¿Cómo puedo detectar cuando un JRadioButton se cambia de 'no seleccionado' a 'seleccionado' cuando se hace clic con el mouse? Intenté usar un ActionListener en el botón, pero se activa cada vez que se hace clic en el botón de radio, no solo cuando cambia de estado a 'seleccionado'.

He pensado en mantener una variable booleana que recuerde el estado del botón y probarla dentro del ActionListener para ver si cambia su estado, pero me pregunto si hay una solución mucho mejor o más limpia.

¿Fue útil?

Solución

Mire JRadioButton. addItemListener ()

EDITAR: es poco probable que desee utilizar un changeListener, ya que se dispara varias veces por clic. Un itemListener se dispara solo una vez por clic. Ver aquí

EDIT2: solo para expandir esto, un actionListener en un jradioButton se activará cada vez que un usuario haga clic en él, incluso si ya está seleccionado. si eso es lo que quieres, bien, pero me resulta molesto. Solo quiero que me notifiquen si está seleccionado o no seleccionado.

Un ChangeListener activará todo tipo de cosas, lo que significa que su oyente recibirá 5 o más eventos por clic. No es bueno.

Un elemento de escucha activará solo si cambia el estado seleccionado o no seleccionado. Esto significa que un usuario puede hacer clic en él varias veces y no se disparará si no cambia. En su método de controlador, deberá tener un bloque if para verificar el estado de SELECTED o DESELECTED y hacer lo que sea necesario:

@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 acaba de ser seleccionado o deseleccionado, no es que el usuario solo esté golpeando la interfaz por alguna razón desconocida.

Otros consejos

Creo que desea agregar una implementación ChangeListener .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top