0

彼らが 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つのこと。

  1. 私は高さを設定したくありません。タブ パネルをコンテンツと同じ大きさにしたい。アプリをレイアウトするこの「より良い」方法で高さを設定する必要がある理由がわかりません。

  2. まだ画面にはまったく映っていません。ScrollPanelにアタッチされているためだと思います。私を混乱させているのは、ScrollPanel が実際に RequiresSize と ProvidesResize を実装しているので、有効な LayoutPanel ではないということですか? LayoutPanel が行うことは文字通りすべてです。これらのインターフェースを実装するのは ComplexPanel です

ページを調べて、TabLayoutPanel があるべき場所にカーソルを合わせると、そこにあるかのように (Chrome で) 青色のハイライトが表示されますが、

<g:layer> 

高さがないので、TabLayoutPanel を非表示にします。実際、ビューアーで高さを編集すると、TabLayoutPanel が表示されます。

ここで根本的に間違ったことをしていますか?私は非常にやりたいです:

RootLayoutPanel > DockLayoutPanel > ScrollPanel > *Some Container > TabLayoutPanel

そして物事がただ...うまくいくために。内部で生成されるすべてのテーブルを取り除くために、現在のアプリをこの新しいレイアウトのものに変換しようとしていますが、修正するよりも多くの問題を引き起こしているようです。

*このコンテナには、タブ パネルの上下にあるものがあります

4

1 に答える 1

0

提案されたレイアウトの ScrollPanel は、DockLayoutPanel によって割り当てられたスペースを占有します。"Some Container" が ScrollPanel に割り当てられたスペースより大きくならない場合、ScrollPanel は決してスクロールしません。「一部のコンテナ」が大きくなる可能性がある場合 (つまり、スクロールが必要な場合)、このコンテナは ScrollPanel からそのサイズを取得できません。高さを明示的に設定するか、コンテンツとともに成長する通常の FlowPanel にする必要があります。どちらの場合も、この「一部のコンテナ」は、TabLayoutPanel を含むその子に任意のサイズを提供できません。

要件を確認せずにアドバイスを与えることは困難ですが、独自のコンテンツと共に成長するパネル内に TabLayoutPanel を含める必要がある場合は、コードまたは CSS で高さを自分で設定する必要があります。

于 2015-12-18T00:43:44.283 に答える