GWT UiBinder ничего не показывает
Я новичок в GWT. Я только начал делать простой форум GWT как проект для моего университета. У меня проблема с работой UiBinder. Я думаю, что показ кода - лучший способ объяснить мою проблему.
Header.ui.xml
<g:DockLayoutPanel>
<g:west size="5">
<g:Label ui:field="forumTitle"/>
</g:west>
</g:DockLayoutPanel>
Header.java
package com.project.gwtforum.client.widgets;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
public class Header extends Composite{
private static HeaderUiBinder uiBinder = GWT.create(HeaderUiBinder.class);
interface HeaderUiBinder extends UiBinder<Widget, Header> {
}
public Header() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiField
Label forumTitle;
public Label getForumTitle() {
return forumTitle;
}
}
GWTForum.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="GWTForum.css">
<script type="text/javascript" language="javascript" src="gwtforum/gwtforum.nocache.js"></script>
</head>
<body>
<div id="header"></div>
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
</body>
</html>
GWTForum.css
h1 {
font-size: 2em;
font-weight: bold;
color: #777777;
margin: 40px 0px 70px;
text-align: left;
}
GWTForum.java
package com.project.gwtforum.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.project.gwtforum.client.widgets.Header;
public class GWTForum implements EntryPoint{
private GWTForumConstants constants = GWT.create(GWTForumConstants.class);
private Header headerWidget = new Header();
@Override
public void onModuleLoad() {
initializeLayout();
}
private void initializeLayout() {
RootPanel.get("header").add(headerWidget);
Window.setTitle(constants.windowTitle());
headerWidget.getForumTitle().setText(constants.windowTitle());
headerWidget.getForumTitle().setStyleName("h1");
}
}
Проблема в том, что в браузере ничего нет, когда я компилирую проект. Когда я отлаживаю приложение, я вижу, что RootPanel меняется - код в нем был верным, но браузер ничего не показывает. Firebug также видит заголовок div с меткой и т. Д., Но ничего не отображается. Firefox "Показать исходный код" не имеет ничего в "заголовке" div. Что я делаю не так?
1 ответ
Вы смешиваете макет (DockLayoutPanel
) без макета (RootPanel.get("header")
) панели.
Либо использовать RootLayoutPanel
(это перехватит все тело вашего приложения; следовательно, вам нужно будет переписать его, чтобы настроить области заголовка / главного / нижнего колонтитула внутри приложения, а не полагаться на DOM
заполнители) или установить header
размер явно. Смотрите официальные документы.
Я бы пошел за первым.