Question

Quand je crée un couple de boutons radio (new Button(parent, SWT.RADIO)) et régler la sélection par programmation radioButton5.setSelection(true) le bouton radio sélectionné précédemment reste également sélectionné. Dois-je itérer sur tous les autres boutons radio du même groupe pour les désélectionner ou est-il une alternative plus simple? Merci à l'avance.

Était-ce utile?

La solution

Malheureusement, vous devez itérer sur toutes les options. Pour la première fois lorsque votre interface utilisateur arrive alors un événement BN_CLICKED est tiré. Si votre Shell ou Group ou tout autre contenant des boutons radio ne sont pas créés avec l'option SWT.NO_RADIO_GROUP alors la méthode suivante est appelée:

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

éclipse essentiellement elle-même dépend de itérer sur tous les boutons de radio et de leur état de basculer.

Chaque fois que vous sélectionnez manuellement un bouton radio l'événement BN_CLICKED est tiré et donc le basculement automatique.

Lorsque vous utilisez button.setSelection(boolean) alors aucun événement BN_CLICKED est tiré. Par conséquent, aucune alternance automatique de boutons radio.

Vérifiez la classe org.eclipse.swt.widgets.Button pour plus de détails.

Autres conseils

Les boutons radio au sein du même composite agirait en tant que groupe. Un seul bouton radio sera sélectionné à la fois. Voici un exemple de travail:

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

Cela devrait se faire automatiquement. Comment créez-vous les boutons? Sont-ils sur le même parent? le parent utilise le style NO_RADIO_GROUP?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top