uibinder gwt方法调用

时间:2013-01-17 10:57:03

标签: gwt methods widget call uibinder

我正在尝试习惯GWT和UiBinder。但我无法解决这个问题。 一个例子,向您展示我的意思:

MainMenu.ui.xml

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:gwt="urn:import:com.google.gwt.user.client.ui" xmlns:my="urn:import:com.wn.webapp.client.UiBinder">

   <gwt:VerticalPanel>
     <my:TopMenu/>
     <gwt:VerticalPanel>
         <gwt:HTMLPanel>
             <gwt:TextBox/>
         </gwt:HTMLPanel>
         <my:ItemList/>
         <my:PageMenu/>
     </gwt:VerticalPanel>
   </gwt:VerticalPanel>
</ui:UiBinder

我创建了一个MainMenu并将一些ui.xml文件嵌入其中。这很好用。该网站看起来不错。

但我怎么能这样做? 这是我的PageMenu.ui.xml文件的代码,我将其嵌入到MainMenu.ui.xml中。

public class PageMenu extends Composite{

  private static PageMenuUiBinder uiBinder = GWT.create(PageMenuUiBinder.class);

  interface PageMenuUiBinder extends UiBinderWidget, PageMenu{}

  public PageMenu(){
      initWidget(uiBinder.createAndBindUi(this));
  }

  public void setButtonText(ArrayListString textIds){
       //doessomething
  }
}

现在我想要求前任。 onModuleLoad()中的setButtonText()方法。

public void onModuleLoad()
{
    MainMenu mainmenu = new MainMenu();
    RootPanel.get().add(this.mainmenu);
    // call it here (setButtonText())
}

我该怎么做?

问候 劳拉(我不是那么有经验的程序员。所以当你试着回答时,请注意这一点:D)THX

2 个答案:

答案 0 :(得分:0)

要访问button.setText(),您必须先访问button。因此,您的PageMenu.ui.xml必须具有以下内容:

<gwt:Button ui:field="button" />

并且您的PageMenu.java必须具有字段声明:

@UiField
Button button;

为PageMenu(在MainMenu)和按钮(在PageMenu)实现getter,然后你可以这样做:

public void onModuleLoad()
{
    MainMenu mainmenu = new MainMenu();
    RootPanel.get().add(this.mainmenu);
    mainmenu.getPageMenu().getButton().setText("What you want.");
}

答案 1 :(得分:0)

您必须创建2个访问者:

  • PageMenu.java中的getButton()

  • MainMenu.java中的getPageMenu()

您现在可以使用

调用它
mainMenu.getPageMenu().getButton().setText("your text");
相关问题