読者です 読者をやめる 読者になる 読者になる

GWTでDockLayoutPanelの表示が崩れる

DockLayoutPanelは、標準モード用なので、これを互換モード用のパネルに追加したりすると正常に表示されない。

DockLayoutPanel p = new DockLayoutPanel(Unit.EM);
p.addNorth(new HTML("north"), 2);
p.addSouth(new HTML("south"), 2);
p.addEast(new HTML("east"), 2);
p.addWest(new HTML("west"), 2);
p.add(new HTML("center"));

// これはNG
// RootPanel.get().add(p)

// これが正しい。
RootLayoutPanel.get().add(p);

Javadocに書いてあるのだけど、Eclipse Pluginが生成する初期コードはRootPanelを使っているのでしばらく気付かなかった...
Developer's Guide - Layout Using Panels - Google Web Toolkit - Google Code
このへんを見るとHorizontalPanel以外は標準モード用のパネルが用意されているけど、HorizontalPanelについてはFlowLayout+CSSでの"float: left;"で対応する必要があるとのこと。