Pergunta

Quando eu criar um par de botões de rádio (new Button(parent, SWT.RADIO)) e definir a seleção programaticamente usando radioButton5.setSelection(true) o botão de opção previamente selecionada permanece também selecionado. Eu tenho que iterar sobre todos os outros botões de rádio do mesmo grupo para desmarcar-los ou há uma alternativa mais simples? Agradecemos antecipadamente.

Foi útil?

Solução

Infelizmente, você tem que iterar sobre todas as opções. Pela primeira vez quando o seu UI surge então um evento BN_CLICKED é acionado. Se o seu Shell ou Group ou qualquer recipiente de botões de rádio não é criado com a opção SWT.NO_RADIO_GROUP em seguida, o seguinte método é chamado:

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);
}

Então, basicamente eclipse em si depende de iteração sobre todos os botões de rádio e alternar seu estado.

Cada vez que você selecionar manualmente um botão de opção do evento BN_CLICKED é acionado e, portanto, a alternância automática.

Quando você usa button.setSelection(boolean) então nenhum evento BN_CLICKED é acionado. alternância, portanto, não automática de botões de rádio.

Verifique a classe org.eclipse.swt.widgets.Button para mais detalhes.

Outras dicas

Os botões de rádio dentro do mesmo composto agiria como um grupo. Apenas um botão de opção será selecionada por vez. Aqui está um exemplo de trabalho:

    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");

Isso deve acontecer automaticamente. Como você está criando os botões? Eles estão no mesmo pai? É o pai usando o estilo NO_RADIO_GROUP?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top