Javascript 在composite中生成gwt图表时出错?

Javascript 在composite中生成gwt图表时出错?,javascript,xml,gwt,charts,composite,Javascript,Xml,Gwt,Charts,Composite,我正在GWT上开发应用程序。我想在gwt组合上生成饼图。我正在使用 为了它。我还在项目中导入了gwt可视化jar。我还在gwt.xml中继承了它 我正在使用此代码生成图表 class SimpleViz extends Composite { VerticalPanel vPanel = new VerticalPanel(); public SimpleViz() { // Create a callback to be called when the visualization

我正在GWT上开发应用程序。我想在gwt组合上生成饼图。我正在使用 为了它。我还在项目中导入了gwt可视化jar。我还在gwt.xml中继承了它

我正在使用此代码生成图表

class SimpleViz extends Composite {

VerticalPanel vPanel = new VerticalPanel();

public SimpleViz() {
    // Create a callback to be called when the visualization API
    // has been loaded.


    final PieChart pie = new PieChart(createTable(), createOptions());

    Runnable onLoadCallback = new Runnable() {
        public void run() {
            // Panel panel = RootPanel.get();

            // Create a pie chart visualization.

            pie.addSelectHandler(createSelectHandler(pie));
            // panel.add(pie);

        }
    };


    VisualizationUtils.loadVisualizationApi(onLoadCallback,
            PieChart.PACKAGE);

    vPanel.add(pie);
    initWidget(vPanel);
}

private Options createOptions() {
    Options options = Options.create();
    options.setWidth(400);
    options.setHeight(240);
    options.set3D(true);
    options.setTitle("My Daily Activities");
    return options;
}

private SelectHandler createSelectHandler(final PieChart chart) {
    return new SelectHandler() {
        @Override
        public void onSelect(SelectEvent event) {
            String message = "";

            // May be multiple selections.
            JsArray<Selection> selections = chart.getSelections();

            for (int i = 0; i < selections.length(); i++) {
                // add a new line for each selection
                message += i == 0 ? "" : "\n";

                Selection selection = selections.get(i);

                if (selection.isCell()) {
                    // isCell() returns true if a cell has been selected.

                    // getRow() returns the row number of the selected cell.
                    int row = selection.getRow();
                    // getColumn() returns the column number of the selected
                    // cell.
                    int column = selection.getColumn();
                    message += "cell " + row + ":" + column + " selected";
                } else if (selection.isRow()) {
                    // isRow() returns true if an entire row has been
                    // selected.

                    // getRow() returns the row number of the selected row.
                    int row = selection.getRow();
                    message += "row " + row + " selected";
                } else {
                    // unreachable
                    message += "Pie chart selections should be either row selections or cell selections.";
                    message += "  Other visualizations support column selections as well.";
                }
            }

            Window.alert(message);
        }
    };
}

private AbstractDataTable createTable() {
    DataTable data = DataTable.create();
    data.addColumn(ColumnType.STRING, "Task");
    data.addColumn(ColumnType.NUMBER, "Hours per Day");
    data.addRows(2);
    data.setValue(0, 0, "Work");
    data.setValue(0, 1, 14);
    data.setValue(1, 0, "Sleep");
    data.setValue(1, 1, 10);
    return data;
}
}

这是gwt.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
  <module rename-to='tbrsmssurveygwt'>
<inherits name='com.google.gwt.user.User'/>
   <inherits name='com.google.gwt.visualization.Visualization'/>
<inherits name='com.google.gwt.user.theme.clean.Clean'/>
  <inherits name="com.googlecode.gwt.charts.Charts"/> 
以下是例外情况:

15:22:49.039[错误][tbrsmssurveygwt]未捕获异常已转义

com.google.gwt.core.client.JavaScriptException:类型错误 @com.google.gwt.core.client.impl.impl::applyLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[JavaScript object290、JavaScript object289、JavaScript object296]:无法 读取未定义的属性“可视化” 位于com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascriptBrowserChannelServer.java:249 在com.google.gwt.dev.shell.modulespaceophm.doinvokeModulespaceophm.java:136 在com.google.gwt.dev.shell.ModuleSpace.invokeNativeModuleSpace.java:576 位于com.google.gwt.dev.shell.ModuleSpace.invokeNativeObjectModuleSpace.java:284 位于com.google.gwt.dev.shell.JavaScriptHost.InvokenativeObject JavaScriptHost.java:91 位于com.google.gwt.core.client.impl.impl.applyImpl.java 位于com.google.gwt.core.client.impl.impl.entry0Impl.java:347 位于sun.reflect.GeneratedMethodAccessor33.invokeUnknown源 在sun.reflect.DelegatingMethodAccessorImpl.invokeDelegatingMethodAccessorImpl.java:43 位于java.lang.reflect.Method.invokeMethod.java:601 位于com.google.gwt.dev.shell.MethodAdapter.invokeMethodAdaptor.java:103 在com.google.gwt.dev.shell.MethodDispatch.invokeMethodDispatch.java:71 位于com.google.gwt.dev.shell.OophmSessionHandler.invokeophmsessionhandler.java:172 位于com.google.gwt.dev.shell.BrowserChannelServer.ReactToMessageBrowserChannelServer.java:293 位于com.google.gwt.dev.shell.BrowserChannelServer.processConnectionBrowserChannelServer.java:547 位于com.google.gwt.dev.shell.BrowserChannelServer.runBrowserChannelServer.java:364 java:722


似乎可视化API需要显式地加载到GWT中才能工作

// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, OrgChart.PACKAGE);

如果第一个不起作用

这个问题可能是这个问题的重复:

另外,请在谷歌群组上勾选同样的问题:


上述链接的示例应用程序在您的案例中有效吗?您可以在这些链接上尝试建议的解决方案并让我们知道吗?

您可以发布代码以查看如何加载图表并添加它们吗?我已经更新了问题!请现在检查它,也许看到您的OnModuleLoad也会有用?我已经检查了这些链接,是的,示例应用程序工作正常,但当我尝试在复合上生成图表时,它会给出上述异常。示例应用程序正在入口点上运行。好的,如果您确定在尝试绘制任何内容之前加载了API,我可以问一下您是否有带标签的图例功能吗?如果您确实尝试关闭该功能。
VisualizationUtils.loadVisualizationApi(onLoadCallback);