我想要在GWT中獲得UI Binder的掛件。試圖讓GWT DataGrid在UiBinder中工作
到目前爲止,我有一個基本的應用程序來顯示帶有一些示例數據的DataGrid,並且它可以在傳統的GWT和UIBinder之間輕鬆切換。它在傳統的GWT中正常工作,但不在UiBinder中正常工作。
這裏的主要入口點類:
public class Main implements EntryPoint {
public void onModuleLoad() {
uiBinder(); //call either uiBinder() or gwt() here
}
/* Use UiBinder to display grid */
public void uiBinder() {
HelloWorld hello = new HelloWorld();
RootPanel.get("myid").add(hello);
}
/* Use traditional GWT to display grid */
public void gwt() {
DataGrid<Contact> grid = new DataGrid<Contact>();
GridInitializer.init(grid);
RootLayoutPanel.get().add(grid);
}
}
下面是由UiBinder的使用的HelloWorld.java:
public class HelloWorld extends Composite {
interface MyUiBinder extends UiBinder<Widget, HelloWorld> {}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
@UiField DataGrid<Contact> grid;
public HelloWorld() {
GridInitializer.init(grid);
initWidget(uiBinder.createAndBindUi(this));
}
}
的GridInitializer類建立網格列和樣本數據。我沒有錯,因爲如果我使用傳統的GWT,它會正確渲染。
這裏是HelloWorld.ui.xml:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:c="urn:import:com.google.gwt.user.cellview.client">
<g:DockLayoutPanel unit="EM">
<g:center>
<c:DataGrid ui:field='grid' />
</g:center>
</g:DockLayoutPanel>
</ui:UiBinder>
如果我使用UI活頁夾,沒有顯示在所有。我很茫然。有什麼建議麼?
您是否期待UiBinder爲您創建網格還是您自己創建網格? (即你的網格有一個零構造參數) – enrybo
另外,你有沒有嘗試給'DataGrid'一個明確的大小?我知道整個'ProvideSize'的事情,但我發現它並不總是工作。 – enrybo