Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t显示GWT数据网格_Java_Gwt_Datagrid - Fatal编程技术网

Java Can';t显示GWT数据网格

Java Can';t显示GWT数据网格,java,gwt,datagrid,Java,Gwt,Datagrid,所以我花了很长时间用GWT创建一个数据网格。我已经根据GWT的文档创建了我的表,并添加了数据,但我根本无法让它或数据网格本身显示出来。我错过了什么?我觉得这件事让我毛骨悚然。我觉得打一个aysnc电话可能是个问题,但我没有收到任何错误。当我编译并执行这部分代码时,屏幕上没有显示任何内容,数据网格应该位于dock上的区域是空的。我是不是忘记了一些琐碎的事情 static int orderID = 1001; private static List<Order

所以我花了很长时间用GWT创建一个数据网格。我已经根据GWT的文档创建了我的表,并添加了数据,但我根本无法让它或数据网格本身显示出来。我错过了什么?我觉得这件事让我毛骨悚然。我觉得打一个aysnc电话可能是个问题,但我没有收到任何错误。当我编译并执行这部分代码时,屏幕上没有显示任何内容,数据网格应该位于dock上的区域是空的。我是不是忘记了一些琐碎的事情

        static int orderID = 1001;
        private static List<OrderLine> orderLineList = new ArrayList<OrderLine>();

        final DataGrid<OrderLine> dgOrder = new DataGrid<OrderLine>();
        dgOrder.setWidth("100%");                   

        //set columns
        TextColumn<OrderLine> orderLineIdColumn = new TextColumn<OrderLine>(){
            @Override
            public String getValue(OrderLine object) {
              return Integer.toString(object.getOrderLineID());
            }
        };
        dgOrder.addColumn(orderLineIdColumn, "OrderLine ID");

        TextColumn<OrderLine> productColumn = new TextColumn<OrderLine>(){
            @Override
            public String getValue(OrderLine object) {
              return getProductName(object.getProductNumber());
            }
        };
        dgOrder.addColumn(productColumn, "Product");

        TextColumn<OrderLine> quantityColumn = new TextColumn<OrderLine>(){
            @Override
            public String getValue(OrderLine object) {
              return Integer.toString(object.getQuantity());
            }
        };
        dgOrder.addColumn(quantityColumn, "Quantity");   

        // add data to datagrid
        Ioma.dataservice.getOrderLines(orderID, new AsyncCallback<ArrayList<OrderLine>>(){
            @Override
            public void onFailure(Throwable caught) {// TODO Auto-generated method stub
                System.out.println("error in retrieving GP.getOrderLines" + caught.toString());
            }
            @Override
            public void onSuccess(ArrayList<OrderLine> result) {
                // TODO Auto-generated method stub
               //yes i realize I could also set it to "result" but I use the result in other places as well, I have also tried setting it to result with no success
                orderLineList = result;
                dgOrder.setRowData(0, orderLineList);
            }
        });

        //add datagrid to the dock 
        dock.add(dgOrder, DockPanel.EAST);

        //add dock to mainPanel
        return dock;
static int orderID=1001;
private static List orderLineList=new ArrayList();
最终数据网格dgOrder=新数据网格();
dgOrder.setWidth(“100%”);
//设置列
TextColumn orderLineIdColumn=newtextcolumn(){
@凌驾
公共字符串getValue(OrderLine对象){
返回Integer.toString(object.getOrderLineID());
}
};
addColumn(orderLineIdColumn,“orderlineid”);
TextColumn productColumn=新的TextColumn(){
@凌驾
公共字符串getValue(OrderLine对象){
返回getProductName(object.getProductNumber());
}
};
dgOrder.addColumn(productColumn,“产品”);
TextColumn quantityColumn=新的TextColumn(){
@凌驾
公共字符串getValue(OrderLine对象){
返回Integer.toString(object.getQuantity());
}
};
dgOrder.addColumn(quantityColumn,“数量”);
//向datagrid添加数据
Ioma.dataservice.getOrderLines(orderID,新的AsyncCallback(){
@凌驾
public void onFailure(可丢弃捕获){//TODO自动生成的方法存根
System.out.println(“检索GP.getOrderLines时出错”+catch.toString());
}
@凌驾
成功时公共无效(ArrayList结果){
//TODO自动生成的方法存根
//是的,我意识到我也可以将其设置为“结果”,但我也在其他地方使用该结果,我也尝试将其设置为结果,但没有成功
orderLineList=结果;
dgOrder.setRowData(0,orderLineList);
}
});
//将datagrid添加到dock
dock.add(dgOrder,DockPanel.EAST);
//将驳接添加到主面板
返回码头;

原来我的问题是我的声明

 final DataGrid<OrderLine> dgOrder = new DataGrid<OrderLine>();
final DataGrid dgOrder=new DataGrid();
应该是

final CellTable<OrderLine> dgOrder = new CellTable<OrderLine>();
final CellTable dgOrder=new CellTable();
我不知道为什么会这样,但确实如此。我现在可以看到我的桌子了。我想知道,您不应该显式调用datagrid的实例吗?

当您使用时,您需要给它一个显式的大小。因为你不需要,所以这就是为什么它有效

当您使用
DataGrid
时,它存在,但高度和宽度均为
0
。因此,您需要显式设置大小:

DataGrid=newdatagrid;
网格设置宽度(“500px”);
网格设置高度(“600px”);
dock.add(dgOrder,DockPanel.EAST);

或者,您可以将网格放在一个小部件中。因此,在您的情况下,我相信您可以使用a,而不是您似乎正在使用的a。

我有一个笑脸。尝试将datagrid放在实现ProvidesResize接口的面板中,如SimpleLayoutPanel。在我的例子中,它也有助于设置SimpleLayoutPanel的大小。

我认为CellTables和DataGrids有不同的方法来确定它们的大小。数据网格更加挑剔,在某些情况下,如果没有解决办法,数据网格将无法工作。例如:以上代码所做的就是调用celltable。Datagrid是一个不同(更好)的小部件。它没有显示的可能原因是您没有使用正确的包含面板(必须支持调整大小)。