1

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

主菜单.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 文件嵌入其中。这工作正常。该网站看起来不错。

但是我该怎么做呢?这是我嵌入到 MainMenu.ui.xml 中的 PageMenu.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

4

2 回答 2

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.");
}
于 2013-01-17T12:23:30.800 回答
0

您必须创建 2 个访问器:

  • PageMenu.java 中的 getButton()

  • MainMenu.java 中的 getPageMenu()

你现在可以用

mainMenu.getPageMenu().getButton().setText("your text");
于 2013-01-17T14:51:56.190 回答