Mirar 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. See here
EDIT2 EDIT2: Solo para ampliar 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 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 oyente disparará solo si el estado seleccionado o no seleccionado 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 control que tendrá que tener un bloque de if
comprobación de SELECTED
o DESELECTED
estado y hacer lo que hay:
@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 usted sabe que si usted está en el método, el botón de radio tiene cualquiera simplemente se ha seleccionado o deseleccionado, no es que el usuario simplemente esté golpeando la interfaz por algún motivo desconocido.
Sí, un ActionListner suele ser la forma en que se hace. Todo el mundo sabe cómo escribir un ActionListener porque es muy común. El código simplemente simplemente usaría el método isSelected() del botón. ItemListener también se dispara varias veces, por lo que debe verificar el evento ItemEvent para ver si este evento fue seleccionado o deseleccionado. Me quedaría con el enfoque más común. – camickr
El uso de un ActionListener como este todavía no funciona, ya que isSelected() devuelve verdadero cada vez que se hace clic en el botón de opción, que es el problema inicial. – cgull
Funciona bien para mí usando JDK6 en XP. Si ChangeListener le dice que el estado ha cambiado, entonces es mejor cambiar el estado o tiene un gran problema. Publique su SSCCE mostrando el problema. – camickr