2011-12-19 19 views
9

Estoy intentando configurar un utableable con uiBinder. Estoy usando GWT 2.4 y sé cómo hacer un dispositivo flexible, pero no con uiBinder. Encontré esta pregunta: How can I add rows to a Google Web Toolkit flextable in the UiBinder? se pidió en SO, pero no hay ejemplos sobre cómo hacer esto.Cómo instalar flexible con uiBinder para GWT 2.4

Así que si declaro el widget como en:

@UiBinder FlexTable flexTable; 

¿Cómo hago un inicializar una fila en blanco con dos columnas y una fila de cabecera que los nombres de las columnas con @UiConstructor o (proveedor = true) usando uiBinder?

Respuesta

12

Al utilizar el widget FlexTable, solo puede usar la plantilla ui.xml para establecer su ubicación, formato y atributos. Todavía deberá proporcionar los contenidos (y encabezados) de la tabla de forma pragmática en su código java.

Hay dos métodos para esto:

1: depender de la plantilla para crear instancias de un nuevo, FlexTable vacío para cuando llame initWidget(...). Puede seguir con llamadas apropiadas al table.setText(0,0, "Header 1"), etc. inmediatamente después para especificar su contenido.

2: una instancia del mismo FlexTable antes de llamar initWidget(...) y también anotar la variable de miembro de mesa con proporcionado = true. Haga el seguimiento con las mismas llamadas al setText().

Ejemplo (Aplicando un enfoque de 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> {} 
} 

Y en su archivo 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

¿Hay una manera de tener un diseño estático que defino en el 'ui archivo .xml'? ¿O de otra forma tener una tabla simple que tenga casillas de verificación y texto, por ejemplo? – displayname

Cuestiones relacionadas