Javascript 在composite中生成gwt图表时出错?
我正在GWT上开发应用程序。我想在gwt组合上生成饼图。我正在使用 为了它。我还在项目中导入了gwt可视化jar。我还在gwt.xml中继承了它 我正在使用此代码生成图表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
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);