我的问题是我刚刚创建了一个cellTable,但是它不起作用,因为我在浏览器中看到了

红色边框是FlowPanel的一部分,其中包含带有黑色边框的表,侧面是GWT.log

现在我已经尝试了所有方法,但我不知道为什么,也许由于某种原因它没有加载表。但是,我可以确保dataProvider正常工作,因为您可以看到,日志显示数据“ Carrello”已加载到我的表“ carrello”的列上。这是表的代码:

public class ShopTable extends CellTable {
private CellTable<Carrello> carrello;

private Column<Carrello, String> columnTitolo;
private Column<Carrello, String> columnTipoSupporto;

private AsyncDataProviderCarrello dataProvider;

private String COLUMN_NAME_TITOLO="Titolo film";
private String COLUMN_NAME_SUPPORTO="Tipo";

public ShopTable(){
    carrello=new CellTable<>();
    createTable();

    createWithAsyncDataProvider();
    GWT.log("Column example: "+carrello.getColumn(0).toString());
}

private void createTable(){
    columnTitolo=buildColumnTitolo();
    columnTipoSupporto=buildColumnTipoSupporto();

    // NEED TO ADD HEADER (and FOOTER MAYBE)
    carrello.addColumn(columnTitolo, "Titolo Film");
    carrello.addColumn(columnTipoSupporto, "Tipo");
}

private Column<Carrello, String> buildColumnTitolo(){
    columnTitolo=new Column<Carrello, String>(new EditTextCell()) {

        @Override
        public String getValue(Carrello object) {
            GWT.log("aggiungo a carrelloTable: "+object);
            return object.getTitolo();
        }
    };
    columnTitolo.setDataStoreName(COLUMN_NAME_TITOLO);

    return columnTitolo;
}
private Column<Carrello, String> buildColumnTipoSupporto(){
    columnTipoSupporto=new Column<Carrello, String>(new EditTextCell()) {

        @Override
        public String getValue(Carrello object) {
            GWT.log("aggiungo a carrelloTable: "+object);
            return object.getTipoSupporto().toString();
        }
    };
    columnTipoSupporto.setDataStoreName(COLUMN_NAME_TITOLO);

    return columnTipoSupporto;
}
private void createWithAsyncDataProvider(){
    dataProvider=new AsyncDataProviderCarrello();
    dataProvider.addDataDisplay(carrello);
    dataProvider.updateRowCount(10, false);
    //.. SORTING METHOD NEED TO ADD

}


}
这是使用ShopTable的Widget UIBinder的代码

public class CarrelloPage extends Composite {

private static CarrelloPageUiBinder uiBinder = GWT.create(CarrelloPageUiBinder.class);

interface CarrelloPageUiBinder extends UiBinder<Widget, CarrelloPage> {
}

interface MyStyle extends CssResource{
    String carrelloTable();
}

@UiField MyStyle style;

@UiField FlowPanel spazio_carrello;

/**
 * necessario per dimensionare ad hoc per
 * il pannello
 */

private ShopTable carrello;

private void resizeWidget(){
    setWidth("100%");
    setHeight(Window.getClientHeight() + "px");
}

public CarrelloPage() {
    carrello=new ShopTable();
    initWidget(uiBinder.createAndBindUi(this));
    carrello.setStyleName(style.carrelloTable());
    spazio_carrello.add(carrello);
    resizeWidget();
    Window.addResizeHandler(resizeHandler);

}
private ResizeHandler resizeHandler = new ResizeHandler()
{
    public void onResize (ResizeEvent event)
    {
        setWidgetToMaxWidthAndHeight();
    }
};

private void setWidgetToMaxWidthAndHeight ()
{
    setWidth("100%");
    setHeight(Window.getClientHeight() + "px");

}
}


感谢您的关注!

最佳答案

您的CellTable的高度为零。这就是为什么您看不到它的原因。

您要么必须在代码中设置CellTable的高度,要么应将其添加到实现ProvidesResize接口的小部件中,例如LayoutPanel。

关于java - 在使用AsyncDataProvider创建的GWT项目CellTable中,未显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30967029/

10-09 05:24