0

私は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 には、Label などの「header」div も表示されますが、何も表示されません。Firefox の「ソース コードを表示」の「ヘッダー」div には何もありません。私が間違っていることは何ですか?

4

1 に答える 1

1

DockLayoutPanelレイアウト ( ) と非レイアウト ( RootPanel.get("header")) パネルを混在させています。

使用するか(アプリの本体全体をフックします。したがって、プレースホルダーに依存せずに、アプリRootLayoutPanelのヘッダー/メイン/フッター領域をセットアップするように書き直す必要があります)、サイズを明示的に設定します。公式ドキュメントを参照してください。DOMheader

私は前者を選びます。

于 2013-11-30T11:31:38.383 に答える