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 размер явно. Смотрите официальные документы.

Я бы пошел за первым.

Другие вопросы по тегам