SWT: pulsanti di opzione set di programmazione
-
27-10-2019 - |
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.
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?