2017-10-02 11 views
1

私は現在、ウィザードページの更新に取り組んでおり、radioButtonの選択後にtextFieldを無効にしたいと考えています。例えばEclipse SWTウィジェット:2つのリスナーを組み合わせる

:(ラジオボタン[1] .getSelection)を
場合は、ここでの質問はradioButton[i]textField[i]の両方のリスナーを接続する方法、である

"はその後、(偽)のは、TextFieldは、[2] .setEnabledとしましょう"一緒に?ありがとう。

case composed: 
      container.setLayout(new RowLayout()); 
      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); 
       radioButton[i].addSelectionListener(new SelectionAdapter(){ 

        @Override 
        public void widgetSelected(SelectionEvent arg0) { 
         // TODO Auto-generated method stub 

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

        @Override 
        public void modifyText(ModifyEvent arg0) { 
         // TODO Auto-generated method stub 

        } 

       }); 
      } 

答えて

3

リスナーを追加する前にラジオボタンとテキストフィールドを作成するので、両方を参照できます。

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

ます。また、同じリスナーオブジェクトであることを、両方のリスナーを作ることができる(ただし、正直に言うと、なぜわざわざ - それは、単一の目的を持つ小さなリスナーを持っている方が良いでしょう):

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

私が試しました最初の解決策とそれは完全に働いた。どうもありがとう – Ben193

関連する問題