如何在定义的方法之外访问组合的组件

时间:2017-06-20 16:24:04

标签: swt jface

我有一个名为creatcomponents()的方法,我在复合中创建了很少的文本字段和按钮。现在我想写一个调用方法的按钮的监听器,在这个方法中我得到了文本字段的值。我面临的问题是我无法从侦听器中调用的方法访问文本字段。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分: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();
   }
 });