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;"で対応する必要があるとのこと。