2011-12-19 9 views
9

Sto provando a configurare un flextable con uiBinder. Sto usando GWT 2.4 e so come fare un flextable, ma non con uiBinder. Ho trovato questa domanda: How can I add rows to a Google Web Toolkit flextable in the UiBinder? è stato chiesto su SO, ma non ci sono esempi su come farlo.Come configurare flextable con uiBinder per GWT 2.4

Quindi, se dichiaro il widget come in:

@UiBinder FlexTable flexTable; 

Come faccio a fare un inizializzo una riga vuota con due colonne e una riga di intestazione che i nomi delle colonne con @UiConstructor o (fornitore = true) utilizzando uiBinder?

risposta

12

Quando si utilizza il widget FlexTable, è possibile utilizzare solo il modello ui.xml per impostarne la posizione, la formattazione e gli attributi. Dovrai comunque fornire pragmaticamente il contenuto (e le intestazioni) del tavolo nel tuo codice java.

Ci sono due approcci a questo:

1: si basano sul modello per creare un'istanza di un nuovo, FlexTable vuoto per voi quando si chiama initWidget(...). È possibile seguire immediatamente le chiamate appropriate a table.setText(0,0, "Header 1"), ecc. Per specificare il contenuto.

2: un'istanza FlexTable soli prima di chiamare initWidget(...) e anche annotare la variabile membro tavolo con fornito = true. Follow-up con le stesse chiamate a setText().

Esempio (Utilizzando l'approccio 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> {} 
} 

E nel file 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

C'è un modo per avere un layout statica che definisco nel 'ui .xml' file? O in un altro modo per avere una tabella semplice con caselle di controllo e testo, ad esempio? – displayname