Извините, если это глупый вопрос, но я только начинаю изучать GWT и застрял в этой проблеме надолго ....Вот мой код:
public void onModuleLoad() {
HelloWorldPanel helloWorldPanel = new HelloWorldPanel();
RootPanel.get().add(helloWorldPanel);
//RootPanel.getBodyElement().appendChild(helloWorldPanel.getElement());
Button b = new Button();
b.setText("button B");
b.addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent arg0)
{
System.out.println("click B");
Window.alert("Hello button B");
}
});
RootPanel.get().add(b);
}
И это мой HelloWorldPanel.java:
public class HelloWorldPanel extends Composite
{
interface HelloWorldUiBinder extends UiBinder<Widget , HelloWorldPanel> {}
private static HelloWorldUiBinder uiBinder = GWT.create(HelloWorldUiBinder.class);
@UiField TextBox nameTextBox;
@UiField Button goButton;
public HelloWorldPanel()
{
initWidget(uiBinder.createAndBindUi(this));
nameTextBox = new TextBox();
nameTextBox.setText("World");
goButton = new Button("Go");
goButton.addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent event)
{
System.out.println("clicked , event = " + event);
Window.alert("Hello " + nameTextBox.getValue());
}
});
}
}
И HelloWorldPanel.ui.xml:
<ui:UiBinder
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<g:TextBox ui:field="nameTextBox" />
<g:Button ui:field="goButton" text="Go"/>
</g:HTMLPanel>
</ui:UiBinder>
Это оченьБазовый «Композитный» виджет, но TextBox и Button в HelloWorldPanel просто не работают.Значение по умолчанию («Мир») не отображается, и кнопка не реагирует, нет сообщения System.out ...
Но кнопка, определенная в onModuleLoad (), работает просто хорошо, я не знаю, почему.... Может кто-нибудь сказать мне, где идет не так?Большое спасибо!
Еще один вопрос: в чем разница между RootPanel.get().add(helloWorldPanel);
и RootPanel.getBodyElement().appendChild(helloWorldPanel.getElement());
?Кажется, тот же результат ...