Как настроить flextable с помощью uiBinder для GWT 2.4 - PullRequest
9 голосов
/ 19 декабря 2011

Я пытаюсь настроить гибкий с помощью uiBinder.Я использую GWT 2.4, и я знаю, как сделать гибкий, но не с uiBinder.Я нашел этот вопрос: Как я могу добавить строки в гибкую таблицу Google Web Toolkit в UiBinder? был задан на SO, но нет примеров того, как это сделать.

Так что, если я объявлю виджет следующим образом:

@UiBinder FlexTable flexTable;

Как выполнить инициализацию пустой строки с двумя столбцами и строкой заголовка с именами столбцов с помощью @UiConstructor или (provider= true) используя uiBinder?

1 Ответ

12 голосов
/ 21 декабря 2011

При использовании виджета FlexTable вы можете использовать только шаблон ui.xml, чтобы установить его местоположение, форматирование и атрибуты.Вам по-прежнему необходимо прагматично предоставлять содержимое (и заголовки) таблицы в своем Java-коде.

Существует два подхода к этому:

1: Relyв шаблоне для создания нового пустого FlexTable для вас при вызове initWidget(...).Сразу после этого вы можете выполнить соответствующие вызовы на номер table.setText(0,0, "Header 1") и т. Д., Чтобы указать свой контент.

2: Создайте FlexTable самостоятельно до , на который вы позвоните initWidget(...) а также аннотируйте переменную члена таблицы с помощью условии = true.Выполните те же вызовы на setText().

Пример (с использованием подхода 2)

public final class SomeWidget extends Composite {

  @UiField (provided=true) FlexTable table;

  SomeWidget() {

    // When using provide=true, the table must be instantiated
    // BEFORE calling initWidget.
    setupTable();

    initWidget(binder.createAndBindUi(this));
  }

  private void setupTable() {
    table = new FlexTable();
    table.setText(0, 0, "Header 1");
    table.setText(0, 1, "Header 2");

    // Create a temp blank row:
    table.insertRow(1);
  }

  private static final Binder binder = GWT.create(Binder.class);
  interface Binder extends UiBinder<Widget, SomeWidget> {}
}

И в вашем файле ui.xml:

<ui:UiBinder
   xmlns:gwt="urn:import:com.google.gwt.user.client.ui"
   xmlns:ui="urn:ui:com.google.gwt.uibinder">

  <ui:style>
    .table-style {
      border: 1px solid black;
    }
  </ui:style>

  <gwt:HTMLPanel>
    Other random html
    <gwt:FlexTable ui:field="table" styleName="{style.table-style}" borderWidth="2" />
  </gwt:HTMLPanel>

</ui:UiBinder>
...