2017-06-20 5 views
0

コンポジット内にテキストフィールドとボタンをほとんど作成していないcreatcomponents()というメソッドがあります。今、メソッドを呼び出すボタンにリスナーを書きたいと思っています。このメソッドでは、テキストフィールドの値を取得しています。私が直面している問題は、リスナーで呼び出されたメソッドからテキストフィールドにアクセスできないことです。誰かがこれを達成する方法を教えてくれますか?定義済みのメソッドの外にあるコンポジットのコンポーネントにアクセスする方法

答えて

1

一つの方法は、コントロールを保存するためには、あなたのクラスのフィールドです:

public class MyClass 
{ 
    private Text text1; 
    private Text text2; 

    public void createComponents(Composite parent) 
    { 
    Composite composite = new Composite(parent, SWT.None); 

    text1 = new Text(composite, SWT.SINGLE); 

    text2 = new Text(composite, SWT.SINGLE); 

    text1.addModifyListener(new ModifyListener() 
    { 
     @Override 
     public void modifyText(ModifyEvent event) 
     { 
     // Access field 
     String text = text1.getText(); 
     } 
    }); 
    } 
} 

はまた、リスナーに渡されたイベントクラスの多くは、そのことができます、電流制御を指しwidgetフィールドを持っていることに注意してくださいまた、使用します。

text1.addModifyListener(new ModifyListener() 
{ 
    @Override 
    public void modifyText(ModifyEvent event) 
    { 
    Text control = (Text)event.widget; 
    String text = control.getText(); 
    } 
}); 
+0

おかげでグレッグは、私はテキストフィールドがaccesiibleになりますテキストフィールドを無効にしたい場合は、保存menthodのmodifyTextにし、中)メソッドを呼び出し(保存言えば? – user04556

+0

'save'が' MyClass'のメソッドであれば、それはOKです。 –

関連する問題