GWT - панель раскладки в UiBinder

Мне нужно реализовать DockLayoutPanel в UiBinder. Я знал, что мы можем использовать и так далее в UiBinder, чтобы делать то же самое, что и DockLayoutPanel.addNorth(), DockLayoutPanel.addWest().

Мой вопрос заключается в том, есть ли что-нибудь в Uibinder, который может делать то же самое, что DockLayoutPanel.insertNorth(), DockLayoutPanel.insertWest()?

Кроме того, существуют ли какие-либо официальные документы, по которым я могу искать команды Uibinder, чтобы я мог знать, что я могу использовать для uibinder?

Благодарю.

3 ответа

Решение

И то и другое add*() а также insert*() Методы DockLayoutPanel предназначены для программного добавления подпанелей во время выполнения. UiBinder не делает "то же самое", что и эти методы. Ваша работа напрямую с UiBinder происходит только во время разработки.

UiBinder - это статический инструмент макета, "снимок" вашего виджета сразу после инициализации, способ описать, каково расположение элементов относительно друг друга вначале.

Виджеты, которые вы определяете с помощью UiBinder, могут программно обрабатываться после инициализации. Предположим, вы указали следующий макет:

 <g:DockLayoutPanel ui:field="myDockPanel">
    <g:north size="100">
        <g:Label ui:field="northernLabel">I am far north</g:Label>
    </g:north>
    <g:center>
        <g:Label ui:field="centerLabel">Center Stage</g:Label>
    </g:center>
</g:DockLayoutPanel>

В коде, запущенном после инициализации вашего представления, вы можете перейти:

myDockPanel.insertNorth(new Label("I am even farther north!"), 100.0, northernLabel);

Кроме того, существуют ли какие-либо официальные документы, по которым я могу искать команды Uibinder, чтобы я мог знать, что я могу использовать для uibinder?

Раздел руководства Google Dev по декларативному макету с помощью UiBinder является настолько официальным, насколько это возможно, AFAIK.

Вот что вы ищете:

<g:FlowPanel>
    <g:DockLayoutPanel ui:field="myPanel">
        <g:west size="300">
            <g:VerticalPanel ui:field="mySideBar" />
        </g:west>
        <g:center>
            <g:VerticalPanel ui:field="myMainPanel" />
        </g:center>
    </g:DockLayoutPanel>
</g:FlowPanel>

В Ui нет никаких "команд":Binder. Вы можете указать макет, используя виджеты и HTML, и вы можете установить различные атрибуты для ваших виджетов (например, класс, ширина, высота, текст, заголовок, значение и т. Д.). Но вы не можете сказать Ui:Binder вставлять виджет в одну ситуацию, а не вставлять его в другую, например. Вы делаете это в коде вашего приложения.

Другие вопросы по тегам