9

我正在尝试使用 uiBinder 设置一个 flextable。我正在使用 GWT 2.4,我知道如何做一个 flextable,但不使用 uiBinder。我发现了这个问题:How can I add rows to a Google Web Toolkit flextable in the UiBinder? 在 SO 上被问到,但没有关于如何执行此操作的示例。

因此,如果我将小部件声明为:

@UiBinder FlexTable flexTable;

如何使用 uiBinder 初始化具有两列的空白行和使用 @UiConstructor 或 (provider=true) 命名列的标题行?

4

1 回答 1

12

使用 FlexTable 小部件时,您只能使用 ui.xml 模板来设置它的位置、格式和属性。您仍然需要在 Java 代码中实用地提供表的内容(和标题)。

有两种方法:

1:当你调用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>
于 2011-12-20T21:34:09.023 回答