Pregunta

Cuando creo un par de botones de radio (new Button(parent, SWT.RADIO)) y establecer la selección mediante programación utilizando radioButton5.setSelection(true) el botón de radio seleccionada previamente también permanece seleccionado. ¿Tengo que iterar sobre todos los otros botones de radio del mismo grupo para anular la selección de ellos o hay una alternativa más simple? Gracias de antemano.

¿Fue útil?

Solución

Por desgracia, hay que iterar sobre todas las opciones. Por primera vez cuando su interfaz de usuario aparece a continuación, un evento BN_CLICKED se dispara. Si su Shell o Group o lo que sea contenedor de botones de radio no se crea con la opción SWT.NO_RADIO_GROUP entonces el siguiente método se llama:

void selectRadio () 
{
    Control [] children = parent._getChildren ();
    for (int i=0; i<children.length; i++) {
        Control child = children [i];
        if (this != child) child.setRadioSelection (false);
    }
    setSelection (true);
}

Así que, esencialmente Eclipse en sí depende de la iteración en todos los botones de radio y alternar su estado.

Cada vez que se selecciona manualmente un botón de opción se activa el evento BN_CLICKED y por lo tanto la conmutación automática.

Cuando se utiliza button.setSelection(boolean) entonces ningún caso BN_CLICKED se dispara. Por lo tanto no hay alternancia automática de botones de radio.

Comprobar la clase org.eclipse.swt.widgets.Button para más detalles.

Otros consejos

Los botones de radio dentro del mismo compuesto actuaría como un grupo. Sólo un botón de opción se seleccionará a la vez. Aquí está un ejemplo de trabajo:

    Composite composite = new Composite(parent, SWT.NONE);

    Button btnCopy = new Button(composite, SWT.RADIO);
    btnCopy.setText("Copy Element");
    btnCopy.setSelection(false);

    Button btnMove = new Button(composite, SWT.RADIO);
    btnMove.setText("Move Element");

Esto debe suceder de forma automática. ¿Cómo estás creando los botones? ¿Están en el mismo padre? Es el padre usando el estilo NO_RADIO_GROUP?

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