Я написал немного, прежде чем понял простой ответ, который, на мой взгляд, вам действительно нужен, поэтому сначала простой ответ, а затем еще несколько вещей, которые нужно учитывать.
Вы создаете новый экземпляр CellTable
в вашем ui.xml
файле.Это заменяет уже настроенный экземпляр CellTable
в onInitialize
, что означает, что у него нет столбцов, и поэтому не отображается.Будет выполнен вызов uibinder.createAndBind
, и будут созданы все виджеты с аннотациями @UiField
, если вы не пометите их как уже предоставленные.Два варианта:
Пометить как указано:
@UiField(provided = true)
CellTable<Contact> table;
Не настраивать таблицу до тех пор, пока uibinder.createAndBind
не будет вызван
//...
Widget widget = uiBinder.createAndBindUi(this);
table.setWidth("100%", true);
table.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
initTableColumns();
// Push the data into the widget.
table.setRowData(CONTACTS);
// Set table width.
table.setWidth("100%");
Первый вариант, вероятно, лучше, так что вы можете полностью настроить его, прежде чем рисовать что-либо.Тем не менее, я также не тестировал (недостаточно кода, предоставленного для простого тестирования).
Различные LayoutPanels (обычно вещи, которые реализуют ProvidesResize и requireResize) измеряют размер своих дочерних элементов в зависимости от конкретных правилу каждого есть.
Они могут только определять размер своих прямых дочерних элементов - если задан дочерний элемент, который не требует изменения размера (например, HTMLPanel), они не выполняют там никакой компоновки, вместо этого ожидая, что контейнер определит размер своих дочерних элементов, как он видитfit.
Таким образом, HtmlPanel и html, которые вы нарисовали в своем файле ui.xml, вероятно, позволили TabLayoutPanel правильно передавать информацию о компоновке в CellTable.Если вы не хотите использовать макет, то это хорошо - вам нужно изменить размер CellTable другим способом.
Еще одна мысль: используйте FireBug или тому подобное, чтобы убедиться, чтоДом настроен так, как вы ожидаете.Там вы увидите, что ячейка присутствует, но не имеет содержимого.