Frage

Wenn ich erstelle ein paar Radio-Buttons (new Button(parent, SWT.RADIO)) und stellen Sie die Auswahl programmatisch radioButton5.setSelection(true) mit dem zuvor ausgewählten Optionsfeld bleibt auch ausgewählt. Muss ich alle anderen Radiobuttons der gleichen Gruppe iterieren abzuwählen sie oder gibt es eine einfachere Alternative? Vielen Dank im Voraus.

War es hilfreich?

Lösung

Leider haben Sie zu iterieren über alle Optionen. Zum ersten Mal, wenn Sie Ihre UI kommt dann ein BN_CLICKED Ereignis ausgelöst wird. Wenn Ihre Shell oder Group oder was auch immer Container von Optionsfeldern nicht mit SWT.NO_RADIO_GROUP Option erstellt wird, dann wird das folgende Verfahren genannt:

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

So im Wesentlichen selbst verdunkeln hängt von iterieren alle Radio-Buttons und Makeln ihren Zustand.

Jedes Mal, wenn Sie manuell einen Radiobutton wählen das BN_CLICKED Ereignis ausgelöst wird und somit die automatische Umschaltung.

Wenn Sie button.setSelection(boolean) verwenden dann wird kein BN_CLICKED Ereignis ausgelöst. Daher ist keine automatische Umschaltung von Radio-Buttons.

Überprüfen Sie die org.eclipse.swt.widgets.Button Klasse für weitere Details.

Andere Tipps

Die Optionsfelder innerhalb des gleichen Verbunds als Gruppe handeln würden. Nur ein Optionsfeld wird zu einem Zeitpunkt ausgewählt werden. Hier ist ein funktionierendes Beispiel:

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

sollte dies automatisch geschehen. Wie schaffen Sie die Tasten? Sind sie auf dem gleichen Elternteil? Sind die Eltern mit NO_RADIO_GROUP Stil?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top