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>
fonte
2011-12-20 21:34:09
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