GWT-运动图表/日期对象

GWT-运动图表/日期对象,gwt,Gwt,我在创建GWT运动图表时遇到问题。我希望图表如下所示: 以下是我的代码: package component.client.widgets; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Locale; imp

我在创建GWT运动图表时遇到问题。我希望图表如下所示:

以下是我的代码:

package component.client.widgets;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.visualization.client.AbstractDataTable;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.VisualizationUtils;
import com.google.gwt.visualization.client.visualizations.LineChart;
import com.google.gwt.visualization.client.visualizations.MotionChart;
import com.google.gwt.visualization.client.visualizations.MotionChart.Options;
import com.google.gwt.visualization.client.AbstractDataTable.ColumnType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.DateTimeFormat;

import component.client.SQLRunner;
import component.client.SQLRunnerAsync;

public class DashboardWidget 
{
    private HorizontalPanel containerPanel=null;
    private DataTable data=null;

    public DashboardWidget()
    {
        containerPanel = new HorizontalPanel();
    }
    public HorizontalPanel getContainerPanel()
    {
        SQLRunnerAsync service = (SQLRunnerAsync) GWT.create(SQLRunner.class);
        AsyncCallback<ArrayList<String[]>> callback = new AsyncCallback<ArrayList<String[]>>()
        {
            @Override
            public void onFailure(Throwable caught) 
            {
            }

            @Override
            public void onSuccess(final ArrayList<String[]> result)
            {
                Runnable onLoadCallback = new Runnable() 
                {
                    public void run() 
                    {                           
                        String date1="1988,0,1";
                        String date2="1988,0,1";
                        String date3="1988,0,1";
                        String date4="1988,1,1";
                        String date5="1988,1,1";
                        String date6="1988,1,1";

                        DateTimeFormat fmt = DateTimeFormat.getFormat("yyyy,M,d");
                        Date d1 = fmt.parse(date1);
                        Date d2 = fmt.parse(date2);
                        Date d3 = fmt.parse(date3);
                        Date d4 = fmt.parse(date4);
                        Date d5 = fmt.parse(date5);
                        Date d6 = fmt.parse(date6);


                        data.addRows(6);
                        data.addColumn(ColumnType.STRING,"Fruit");
                        data.addColumn(ColumnType.DATE, "Date");
                        data.addColumn(ColumnType.NUMBER, "Sales");
                        data.addColumn(ColumnType.NUMBER, "Expenses");
                        data.addColumn(ColumnType.STRING, "Location");
                        data.setValue(0, 0, "Apples");
                        data.setValue(0, 1, d1);
                        data.setValue(0, 2, 1000);
                        data.setValue(0, 3, 300);
                        data.setValue(0, 4, "East");
                        data.setValue(1, 0, "Oranges");
                        data.setValue(1, 1, d2);
                        data.setValue(1, 2, 950);
                        data.setValue(1, 3, 200);
                        data.setValue(1, 4, "West");
                        data.setValue(2, 0, "Bananas");
                        data.setValue(2, 1, d3);
                        data.setValue(2, 2, 300);
                        data.setValue(2, 3, 250);
                        data.setValue(2, 4, "West");

                        data.setValue(3, 0, "Apples");
                        data.setValue(3, 1, d4);
                        data.setValue(3, 2, 1200);
                        data.setValue(3, 3, 400);
                        data.setValue(3, 4, "East");
                        data.setValue(4, 0, "Oranges");
                        data.setValue(4, 1, d5);
                        data.setValue(4, 2, 900);
                        data.setValue(4, 3, 150);
                        data.setValue(4, 4, "West");
                        data.setValue(5, 0, "Bananas");
                        data.setValue(5, 1, d6);
                        data.setValue(5, 2, 788);
                        data.setValue(5, 3, 617);
                        data.setValue(5, 4, "West");

                        Options options = Options.create();
                        options.setWidth(1000);
                        options.setHeight(1000);

                        MotionChart chart = new MotionChart(data, options);
                        containerPanel.add(chart);
                    }
                };
                VisualizationUtils.loadVisualizationApi(onLoadCallback, MotionChart.PACKAGE);               
            }
        };
        service.getSomeStuffFromDB("","","","", callback);
        return containerPanel;
    }
}
package component.client.widgets;
导入java.text.DateFormat;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.Locale;
导入com.google.gwt.user.client.rpc.AsyncCallback;
导入com.google.gwt.user.client.ui.HorizontalPanel;
导入com.google.gwt.visualization.client.AbstractDataTable;
导入com.google.gwt.visualization.client.DataTable;
导入com.google.gwt.visualization.client.VisualizationUtils;
导入com.google.gwt.visualization.client.visualizations.LineChart;
导入com.google.gwt.visualization.client.visualizations.MotionChart;
导入com.google.gwt.visualization.client.visualizations.MotionChart.Options;
导入com.google.gwt.visualization.client.AbstractDataTable.ColumnType;
导入com.google.gwt.core.client.gwt;
导入com.google.gwt.i18n.client.DateTimeFormat;
导入component.client.SQLRunner;
导入component.client.SQLRunnerAsync;
公共类DashboardWidget
{
private HorizontalPanel containerPanel=null;
私有数据表数据=null;
公共DashboardWidget()
{
containerPanel=新水平面板();
}
公共水平面板getContainerPanel()
{
SQLRunnerAsync服务=(SQLRunnerAsync)GWT.create(SQLRunner.class);
AsyncCallback callback=新的AsyncCallback()
{
@凌驾
失败时的公共无效(可丢弃)
{
}
@凌驾
成功时公开作废(最终ArrayList结果)
{
Runnable onLoadCallback=new Runnable()
{
公开募捐
{                           
字符串date1=“1988,0,1”;
字符串date2=“1988,0,1”;
字符串date3=“1988,0,1”;
字符串date4=“1988,1,1”;
字符串date5=“1988,1,1”;
字符串date6=“1988,1,1”;
DateTimeFormat fmt=DateTimeFormat.getFormat(“yyyy,M,d”);
日期d1=fmt.parse(日期1);
日期d2=fmt.parse(日期2);
日期d3=fmt.parse(日期3);
日期d4=fmt.parse(日期4);
日期d5=fmt.parse(日期5);
日期d6=fmt.parse(日期6);
数据。添加行(6);
addColumn(ColumnType.STRING,“Fruit”);
data.addColumn(ColumnType.DATE,“日期”);
data.addColumn(ColumnType.NUMBER,“销售”);
data.addColumn(ColumnType.NUMBER,“费用”);
data.addColumn(ColumnType.STRING,“位置”);
数据。设定值(0,0,“苹果”);
数据设置值(0,1,d1);
数据设置值(0,2,1000);
数据设置值(0,3300);
数据。设定值(0,4,“东”);
数据。设定值(1,0,“橙色”);
数据设置值(1,1,d2);
数据设置值(1,2950);
数据设置值(1,3200);
数据。设定值(1,4,“西”);
数据。设定值(2,0,“香蕉”);
数据。设定值(2,1,d3);
数据设置值(2,2300);
数据设置值(2,3250);
数据。设定值(2,4,“西”);
数据。设定值(3,0,“苹果”);
数据。设定值(3,1,d4);
数据设置值(3,2,1200);
数据设置值(3,3400);
数据。设定值(3,4,“东”);
数据。设定值(4,0,“橙色”);
数据。设定值(4,1,d5);
数据设置值(4900);
数据设置值(4,3150);
数据。设定值(4,4,“西”);
数据。设定值(5,0,“香蕉”);
数据。设定值(5,1,d6);
数据设置值(5,2788);
数据设置值(5,3617);
数据。设定值(5,4,“西”);
Options=Options.create();
选项。设置宽度(1000);
选项。设置高度(1000);
运动图表=新的运动图表(数据、选项);
集装箱面板添加(图表);
}
};
VisualizationUtils.loadVisualizationApi(onLoadCallback,MotionChart.PACKAGE);
}
};
getSomeStuffFromDB(“,”,“,”,回调);
返回集装箱面板;
}
}
但是我得到了一个错误:

java.lang.IllegalArgumentException:1988,0,1 位于com.google.gwt.i18n.client.DateTimeFormat.parse(DateTimeFormat.java:1579) 位于com.google.gwt.i18n.client.DateTimeFormat.parse(DateTimeFormat.java:1049) 位于component.client.widgets.DashboardWidget$1$1.run(DashboardWidget.java:89) 位于com.google.gwt.ajaxloader.client.ExceptionHelper.runProtected(ExceptionHelper.java:36) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于com.google.gwt.dev.shell.MethodAdapter.invoke(methodAdapter.java:103) 位于com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 位于com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:167) 在com.google