...
<g:VerticalPanel styleName="{style.mainVerticalPanel}">
<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>
</g:VerticalPanel>
...
Что-нибудь выглядит неправильным с этим? Все, что я пытаюсь сделать, делают простую панель разделения, но каждый раз, когда я выполняю это все, я добираюсь, пустая страница. Без любого из SplitPanel
материал, это хорошо работает. То же происходит с DockLayoutPanel
.
Хорошо, все заработало (предыдущие попытки см. В старых версиях ответа;)).
Мое решение основано на примере почты . Рабочий код:
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>
Обратите внимание на ряд моментов:
, а не
(с учетом регистра) RootLayoutPanel
вместо обычного RootPanel
LayoutPanel
- в примере Mail они используют SplitLayoutPanel
, вложенную в DockLayoutPanel
, но только DockLayoutPanel
явно добавляется в ] RootLayoutPanel
- должен ли я понимать, что SplitLayoutPanel
также автоматически добавляется (чтобы он мог получать события изменения размера и т. Д.)? Как насчет некоторых других виджетов, вложенных в главную LayoutPanel - должны ли они быть явно добавлены в RootLayoutPanel
или только если они являются корнем этого Widget / Composite, или это вообще невозможно? У меня действительно нет времени заниматься этим дальше - я оставлю это в качестве домашнего задания для кого-то другого;) Кстати: Я проверил этот код в режиме Quirks и Standards - я не вижу разница, оба работают O_o (хотя это простое использование SplitLayoutPanel
- более сложные примеры, вероятно, приведут к некоторому странному поведению в режиме Quirks и / или ошибкам рендеринга)
Какой тип документа вы используете? Эти панели работают только в стандартном режиме (по крайней мере, с некоторыми браузерами). Если вы используете режим причуд, то часто бывает, что вы получаете пустую страницу с этими панелями.
Проверьте свой HTML-файл. В идеале он должен начинаться с:
<!DOCTYPE html>
Или, альтернативно, другого типа документа, который приводит к стандартному режиму (но убедитесь, что вводите его на 100% дословно), см. http://hsivonen.iki.fi/doctype/