Не может получить работу SplitLayoutPanel - GWT +, UIBinder сводят меня с ума

...
<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.

8
задан Matthew H 22 March 2010 в 20:25
поделиться

2 ответа

Хорошо, все заработало (предыдущие попытки см. В старых версиях ответа;)).

Мое решение основано на примере почты . Рабочий код:

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> 

Обратите внимание на ряд моментов:

  • Прежде всего: у вас была ошибка в вашем XML-шаблоне UiBinder: это , а не (с учетом регистра)
  • Использование RootLayoutPanel вместо обычного RootPanel
  • Я все еще немного не понимаю, что такое LayoutPanel - в примере Mail они используют SplitLayoutPanel , вложенную в DockLayoutPanel , но только DockLayoutPanel явно добавляется в ] RootLayoutPanel - должен ли я понимать, что SplitLayoutPanel также автоматически добавляется (чтобы он мог получать события изменения размера и т. Д.)? Как насчет некоторых других виджетов, вложенных в главную LayoutPanel - должны ли они быть явно добавлены в RootLayoutPanel или только если они являются корнем этого Widget / Composite, или это вообще невозможно? У меня действительно нет времени заниматься этим дальше - я оставлю это в качестве домашнего задания для кого-то другого;)

Кстати: Я проверил этот код в режиме Quirks и Standards - я не вижу разница, оба работают O_o (хотя это простое использование SplitLayoutPanel - более сложные примеры, вероятно, приведут к некоторому странному поведению в режиме Quirks и / или ошибкам рендеринга)

7
ответ дан 5 December 2019 в 18:58
поделиться

Какой тип документа вы используете? Эти панели работают только в стандартном режиме (по крайней мере, с некоторыми браузерами). Если вы используете режим причуд, то часто бывает, что вы получаете пустую страницу с этими панелями.

Проверьте свой HTML-файл. В идеале он должен начинаться с:

<!DOCTYPE html>

Или, альтернативно, другого типа документа, который приводит к стандартному режиму (но убедитесь, что вводите его на 100% дословно), см. http://hsivonen.iki.fi/doctype/

2
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: