9

uiBinderでフレックステーブルをセットアップしようとしています。私はGWT2.4を使用しており、フレックステーブルを実行する方法を知っていますが、uiBinderを使用していません。この質問を見つけました:UiBinderのGoogle Web Toolkitフレックステーブルに行を追加するにはどうすればよいですか?SOについて尋ねられましたが、これを行う方法の例はありません。

したがって、ウィジェットを次のように宣言すると、次のようになります。

@UiBinder FlexTable flexTable;

2つの列を持つ空白行と@UiConstructorまたは(provider = true)で列に名前を付けるヘッダー行をuiBinderを使用して初期化するにはどうすればよいですか?

4

1 に答える 1

12

FlexTableウィジェットを使用する場合、ui.xmlテンプレートを使用して、その場所、フォーマット、および属性を設定することしかできません。それでも、Javaコードでテーブルの内容(およびヘッダー)を実用的に提供する必要があります。

これには2つのアプローチがあります。

1:テンプレートを使用して、を呼び出すときに新しい空のFlexTableをインスタンス化しますinitWidget(...)table.setText(0,0, "Header 1")その後すぐに、などへの適切な呼び出しでフォローアップして、コンテンツを指定できます。

2:呼び出す前に自分でFlexTableをインスタンス化し、initWidget(...)テーブルメンバー変数にprovided=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 に答える