GWTを使用してプログラムで重要なUIを正常に構築した後、UiBinderを使用して同じUIを再作成しようとしています。私はこれまでいかなる種類の宣言型UIシステムも使用したことがなく、進歩を遂げており、そのようなアプローチの利点を確認できますが、DecoratorPanelでStackLayoutPanelを正しくラップすることができません。
StackNavigator.java
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
public class StackNavigator extends Composite {
private static StackNavigatorUiBinder uiBinder = GWT.create(StackNavigatorUiBinder.class);
interface StackNavigatorUiBinder extends UiBinder<Widget, StackNavigator> {}
public StackNavigator() {
initWidget(uiBinder.createAndBindUi(this));
}
}
StackNavigator.ui.xml
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:bandmates="urn:import:org.redboffin.bandmates.client">
<ui:style>
.gwt-DecoratorPanel {
width: 200px;
height: 200px;
}
.gwt-DecoratorPanel .middleCenter {
height: 100%;
width: 100%;
}
</ui:style>
<g:DecoratorPanel>
<g:StackLayoutPanel unit='PX'>
<g:stack>
<g:header size='20'>Item One</g:header>
<g:Label>TODO : Item One List Widget</g:Label>
</g:stack>
<g:stack>
<g:header size='20'>Item Two</g:header>
<g:Label>TODO : Item Two List Widget</g:Label>
</g:stack>
<g:stack>
<g:header size='20'>Item Three</g:header>
<g:Label>TODO : Item Three List Widget</g:Label>
</g:stack>
</g:StackLayoutPanel>
</g:DecoratorPanel>
</ui:UiBinder>
DecoratorPanelにラップされていない場合、StackLayoutPanelは期待どおりに表示および機能します。DecoratorPanelでラップされている場合、StackLayoutPanelは表示されません。その代わりに小さな青い円があります。これは、DecoratorPanelのコーナーグラフィックがしっかりと束ねられていると思います。これが、GWT APIで提案されているように、DecoratorPanelで幅と高さを設定し、中央の領域を100%に設定しようとした理由です。
それは私が期待することをしないので、私はここで何かを誤解しているに違いありません。誰か助けてもらえますか?
ありがとうございました :-)