OK、うまくいきました(以前の試みについては、この回答の古いバージョンを参照してください;))。
私の解決策はMail exampleに基づいています。作業コード:
public class SplitTest implements EntryPoint {
private static TestUiBinder uiBinder = GWT.create(TestUiBinder.class);
interface TestUiBinder extends UiBinder<SplitLayoutPanel, SplitTest> {
}
/**
* This is the entry point method.
*/
public void onModuleLoad() {
SplitLayoutPanel outer = uiBinder.createAndBindUi(this);
RootLayoutPanel.get().add(outer);
}
}
UiBinder *.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">
<ui:style>
.conversationPanelContainer, .conversationPanel, .messageTextAndSendPanel, .messageText {
font-weight: bold;
}
</ui:style>
<g:SplitLayoutPanel>
<g:north size="700">
<g:VerticalPanel>
<g:ScrollPanel styleName="{style.conversationPanelContainer}">
<g:FlexTable ui:field="conversationPanel" styleName="{style.conversationPanel}"></g:FlexTable>
</g:ScrollPanel>
<g:HorizontalPanel styleName="{style.messageTextAndSendPanel}">
<g:TextBox ui:field="messageText" styleName="{style.messageText}"></g:TextBox><g:Button ui:field="sendButton">Send</g:Button>
</g:HorizontalPanel>
</g:VerticalPanel>
</g:north>
<g:south size="300">
<g:Button>TestButton</g:Button>
</g:south>
</g:SplitLayoutPanel>
</ui:UiBinder>
多くのことに注意してください。
- まず第一に: UiBinder XML テンプレートにエラーがありました:
<g:Button>
ではなく<g:button>
(大文字と小文字を区別)
RootLayoutPanel
通常の代わりの使用RootPanel
- 私はまだ
LayoutPanel
s 全体について少し混乱しています - Mail の例SplitLayoutPanel
では、ネストされた aを使用していますが、に明示的に追加されているDockLayoutPanel
のは だけです -も自動的に追加されることを理解する必要があります (サイズ変更を受け取ることができるように)イベントなど)?メインの LayoutPanel にネストされた他のウィジェットについてはどうですか?明示的に追加する必要がありますか、またはそのウィジェット/コンポジットのルートである場合にのみ追加する必要がありますか?それとも不可能ですか? これをさらに追求する時間は本当にありません-他の誰かの宿題として残します;)DockLayoutPanel
RootLayoutPanel
SplitLayoutPanel
RootLayoutPanel
SplitLayoutPanel
ところで: このコードをQuirksモードと Standards モードでチェックしました - 違いはわかりません。および/またはレンダリング エラー)