2011-12-19 7 views
9

私はuiBinderでflextableを設定しようとしています。私はGWT 2.4を使用していますが、私はflextableを行う方法を知っていますが、uiBinderではできません。私はこの質問を見つけました:How can I add rows to a Google Web Toolkit flextable in the UiBinder?が頼まれましたが、これを行う方法の例はありません。したがってGWT 2.4用にuiBinderでflextableを設定する方法

Iは同様にウィジェットを宣言した場合:

@UiBinder FlexTable flexTable; 

どのように@UiConstructor又は(プロバイダ=真)と名前の列が使用して、その2列のヘッダ行と空白行を初期化しますかuiBinder?

答えて

12

FlexTableウィジェットを使用する場合は、ui.xmlテンプレートのみを使用して、その場所、書式設定、および属性を設定できます。 Javaコードでは、テーブルの内容(およびヘッダー)を実際に提供する必要があります。

1:はあなたがinitWidget(...)を呼び出すときのために、新しい空のFlexTableをインスタンス化するテンプレートに任せ

は、これには2つのアプローチがあります。あなたのコンテンツを指定する直後に、table.setText(0,0, "Header 1")などへの適切なコールをフォローアップすることができます。

2:あなたがinitWidget(...)を呼び出しても、真=提供を使用して、テーブルのメンバ変数に注釈を付ける前FlexTable自分をインスタンス化します。同じ電話をsetText()にフォローアップしてください。

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ファイル内(アプローチ2使用):

<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> 
+1

私は 'UIで定義する静的なレイアウトを持ってする方法はありますが.xml'ファイル?または、チェックボックスやテキストなどの単純なテーブルを持つ他の方法ですか? – displayname

関連する問題