2017-10-02 2 views
1

Ich arbeite derzeit auf der Aktualisierung einer Assistentenseite und ich möchte eine textField nach der Auswahl einer radioButton deaktivieren.Eclipse SWT Widget: Kombination von zwei Listenern

Zum Beispiel: if (radiobutton [1] .getSelection)
"dann sagen wir mal textfield [2] .setEnabled (false)"

Die Frage ist hier, wie beide Zuhörer von radioButton[i] zu verbinden und textField[i] zusammen? Vielen Dank.

Antwort

3

Erstellen Sie Radiobuttons und Textfelder, bevor Sie Zuhörer hinzufügen, damit Sie sich auf beide beziehen können.

 Button[] radioButton = new Button[answers.size()]; 
     for (int i = 0; i < answers.size(); i++) { 
      String ans = answers.get(i).getValue(); 
      radioButton[i] = new Button(container, SWT.RADIO); 
      radioButton[i].setText(ans); 
     } 

     Text[] textField = new Text[answers.size()]; 
     for (int i = 0; i < answers.size(); i++) { 
      textField[i] = new Text(container, SWT.SINGLE | SWT.BORDER); 

      radioButton[i].addSelectionListener(new SelectionAdapter(){ 
       @Override 
       public void widgetSelected(SelectionEvent arg0) { 
        textField[i].setEnabled(radioButton[i].getSelection()); 
       }}); 

      textField[i].addModifyListener(new ModifyListener(){ 
       @Override 
       public void modifyText(ModifyEvent arg0) { 
        // your stuff 
       }}); 
     } 

Sie auch beiden Hörer machen könnten das gleiche Listener-Objekt zu sein (aber um ehrlich zu sein, warum die Mühe - es ist besser, mit einem einzigen Zweck kleineren Zuhörer haben):

private static class MyListener extends SelectionAdapter implements ModifyListener { 
    public void widgetSelected(SelectionEvent arg) { ... } 
    public void modifyText(ModifyEvent arg) { ... } 
} 
+0

Ich habe versucht, die erste Lösung und es hat perfekt funktioniert. Danke vielmals – Ben193