我正在尝试习惯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
答案 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");