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

how to access the components of a composite outside its defined method

我有一个名为 creatcomponents() 的方法,我在该方法中创建了几个文本字段和按钮。现在我想将侦听器写入调用方法的按钮,并且在该方法中我获得了文本字段的值。我面临的问题是我无法从侦听器中调用的方法访问文本字段。有人可以帮助我实现这个目标吗?

一种方法是将控件保存在 class:

中的字段
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();
       }
     });
  }
}

另请注意,传递给侦听器的许多事件 class 都有一个 widget 字段,它引用您也可以使用的当前控件:

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