Domanda

Quando creo un paio di pulsanti di opzione (new Button(parent, SWT.RADIO)) e impostare la selezione di programmazione utilizzando radioButton5.setSelection(true) il pulsante di scelta selezionato in precedenza resta anche selezionato. Devo iterare su tutti gli altri pulsanti di opzione dello stesso gruppo per deselezionare loro o c'è un'alternativa più semplice? Grazie in anticipo.

È stato utile?

Soluzione

Purtroppo, si deve iterare su tutte le opzioni. Per la prima volta in cui l'interfaccia utente si presenta quindi un evento BN_CLICKED è sparato. Se il vostro Shell o Group o qualunque contenitore di pulsanti di opzione non viene creato opzione SWT.NO_RADIO_GROUP con l'allora il seguente metodo si chiama:

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

Quindi, in sostanza eclissi stessa dipende iterare su tutti i pulsanti di opzione e commutando il loro stato.

Ogni volta che si seleziona manualmente un pulsante di scelta della manifestazione BN_CLICKED viene licenziato e quindi la commutazione automatica.

Quando si utilizza button.setSelection(boolean) allora nessun caso BN_CLICKED viene licenziato. commutazione Quindi nessun automatica dei pulsanti di opzione.

Controlla la classe org.eclipse.swt.widgets.Button per maggiori dettagli.

Altri suggerimenti

I pulsanti all'interno dello stesso composito agirebbe come un gruppo. Un solo pulsante di opzione saranno selezionati in un momento. Ecco un esempio di lavoro:

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

This should happen automatically. How are you creating the buttons? Are they on the same parent? Is the parent using NO_RADIO_GROUP style?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top