2011-12-19 66 views
9

我正在嘗試使用uiBinder設置柔性。我使用GWT 2.4,我知道如何做一個靈活的,但不與uiBinder。我發現這個問題:How can I add rows to a Google Web Toolkit flextable in the UiBinder?被問到SO,但沒有關於如何做到這一點的例子。如何使用uiBinder爲GWT 2.4設置柔性

所以,如果我宣佈了窗口小部件,如:

@UiBinder FlexTable flexTable; 

如何做一個初始化一個空白行有兩列和標題行名稱的列與@UiConstructor或(供應商=真)使用UiBinder的?

回答

12

使用FlexTable小部件時,只能使用ui.xml模板來設置它的位置,格式和屬性。你仍然需要在你的java代碼中實際提供表格的內容(和標題)。

有兩種方法可供選擇:

1:依靠模板實例化一個新的空FlexTable你,當你調用initWidget(...)。隨後可以立即跟進table.setText(0,0, "Header 1")等的相應調用,以指定您的內容。

2:實例化你叫initWidget(...),並與提供= true的註釋你的表成員變量前FlexTable自己。跟進與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> 
+1

有沒有辦法有一個靜態的佈局,我在'UI定義.xml'文件?或者有任何其他方式有一個簡單的表,有複選框和文本,例如? – displayname 2015-09-04 17:31:43