Я пишу простой код GWT, используя виджеты и XML.Код отформатирован в одной вложенной иерархии.
Класс Demo является точкой входа:
public class Demo4 implements EntryPoint {
public void onModuleLoad() {
UserDashBoard user = new UserDashBoard();
RootPanel.get().add(user);
}
}
Запас класса и погода класса являются обычными виджетами:
public class Stock extends Composite{
@UiField Button stocks;
public Stock() {
initWidget(stocks);
}
@UiHandler("stocks")
void handleClick(ClickEvent e) {
Window.alert("The price of stocks is xxx");
}
}
public class Weather extends Composite{
@UiField Button weather;
public Weather() {
initWidget(weather);
}
@UiHandler("weather")
void handleClick(ClickEvent e) {
Window.alert("Weather is xxx");
}
}
Я создал класс UserDashBoard как один виджет Home, который содержит все остальные виджеты, а также связывает его с файлом XML.
public class UserDashBoard extends Composite{
private static final UserDashBoardUiBinder uiBinder =
GWT.create(UserDashBoardUiBinder.class);
@UiTemplate("UserDashBoardUiBinder.ui.xml")
interface UserDashBoardUiBinder extends UiBinder<Widget, UserDashBoard> {}
public UserDashBoard() {
initWidget(uiBinder.createAndBindUi(this));
}
}
<!-- UserDashboard.ui.xml -->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:my='urn:import:come.my.app.client' >
<g:HTMLPanel>
<my:Weather ui:field="weather"/>
<my:Stock ui:field="stocks"/>
</g:HTMLPanel>
</ui:UiBinder>
Основная проблема заключается в том, что когда я запускаю проект,Я ожидал две кнопки, но не нашел ни одной на сайте, кто-нибудь знает, что здесь происходит не так?На самом деле я изучаю GWT через документацию GWT, забавно, что документация GWT содержит много объяснений UiBinder, но не опубликовала ни одного полного примера кода проекта, что меня смущает фактической структурой кода.