彼らが 2.0 で導入した GWT のレイアウト システムを理解しようと懸命に努力しています。推奨されていると思われますが、古い方法よりもはるかに複雑に思えます。
私がやりたいこと (これは非常に基本的な設計だと思います) は、ヘッダー、左側の垂直メニュー、フッター、およびスクロール コンテンツ セクションを備えたアプリケーションを構築することです。
そのためには、次のようにします。
DockLayoutPanel panel = new DockLayoutPanel();
FlowPanel header = new FlowPanel();
FlowPanel menu = new FlowPanel();
FlowPanel footer = new FlowPanel();
ScrollPanel content = new ScrollPanel();
panel.addNorth(header);
panel.addWest(menu);
panel.addSouth(footer);
panel.add(content);
RootLayoutPanel.get().add(panel);
それは完全にうまくいきます。ただし、ScrollPanel (すべてのコンテンツが配置される場所) は明らかにレイアウト フローを中断します。だから、私の活動では、私は持っています:
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus)
{
FlowPanel viewPanel = new FlowPanel();
panel.add(viewPanel);
}
viewPanel に TabLayoutPanel を追加すると、正しく表示されません。LayoutPanel などに接続されている LayoutPanel に接続されている LayoutPanel に、RootLayoutPanel まで追加する必要があります。
だから、私はこれを試します:
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus)
{
LayouPanel viewPanel = new LayoutPanel();
panel.add(viewPanel);
}
そして、私の ui:binder には、次のものがあります。
<g:LayoutPanel>
<g:layer>
<g:TabLayoutPanel barHeight="3.33" barUnit="EM" height="500px">
<!-- tabs go here -->
</g:TabLayoutPanel>
</g:layer>
</g:LayoutPanel>
ここで2つのこと。
私は高さを設定したくありません。タブ パネルをコンテンツと同じ大きさにしたい。アプリをレイアウトするこの「より良い」方法で高さを設定する必要がある理由がわかりません。
まだ画面にはまったく映っていません。ScrollPanelにアタッチされているためだと思います。私を混乱させているのは、ScrollPanel が実際に RequiresSize と ProvidesResize を実装しているので、有効な LayoutPanel ではないということですか? LayoutPanel が行うことは文字通りすべてです。これらのインターフェースを実装するのは ComplexPanel です
ページを調べて、TabLayoutPanel があるべき場所にカーソルを合わせると、そこにあるかのように (Chrome で) 青色のハイライトが表示されますが、
<g:layer>
高さがないので、TabLayoutPanel を非表示にします。実際、ビューアーで高さを編集すると、TabLayoutPanel が表示されます。
ここで根本的に間違ったことをしていますか?私は非常にやりたいです:
RootLayoutPanel > DockLayoutPanel > ScrollPanel > *Some Container > TabLayoutPanel
そして物事がただ...うまくいくために。内部で生成されるすべてのテーブルを取り除くために、現在のアプリをこの新しいレイアウトのものに変換しようとしていますが、修正するよりも多くの問題を引き起こしているようです。
*このコンテナには、タブ パネルの上下にあるものがあります