我正在学习 GWT (total newb),并且对 Google 提供的 Visualiztion API 有疑问。本页: http ://code.google.com/p/gwt-google-apis/wiki/VisualizationGettingStarted
描述开始使用饼图(这是我需要的)。但是,我正在尝试在使用 UiBinder 的复合 UI 中执行此操作。为此,我不知道如何正确处理显示的回调:
public class SimpleViz implements EntryPoint {
public void onModuleLoad() {
// Create a callback to be called when the visualization API
// has been loaded.
Runnable onLoadCallback = new Runnable() {
public void run() {
Panel panel = RootPanel.get();
// Create a pie chart visualization.
PieChart pie = new PieChart(createTable(), createOptions());
pie.addSelectHandler(createSelectHandler(pie));
panel.add(pie);
}
};
// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE);
}
我的第一个假设是这将进入 UiBinder 构造函数,对吗?然而,这假设我想将元素放在 RootLayoutPanel 中,而我没有。我看不到将其放入活页夹的优雅而明显的方式。我认为即使这个猜测也可能是错误的。专家有什么想法吗?
编辑:我应该明确我的尝试:
public GraphPanel() {
initWidget(uiBinder.createAndBindUi(this));
Runnable onLoadCallback = new Runnable() {
public void run() {
//LayoutPanel panel = RootPanel.
// Create a pie chart visualization.
PieChart pie = new PieChart(createPieTable(), createPieOptions());
pie.addSelectHandler(createSelectHandler(pie));
mySelf.getElement().appendChild(pie.getElement()); // .add(pie);
}
};
// Load the visualization api, passing the onLoadCallback to be called
// when loading is done.
VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE);
}
运行时,我在 Composites DIV 中得到以下信息:
<div class="gwt-viz-container"></div>
但我看不到使用上一页代码的图表。
编辑 2:此链接可能会提供其他信息。但是,建议的解决方案不是最佳的,因为应用程序需要了解更多关于小部件的信息(以及小部件是否存在)。 http://vaadin.com/forum/-/message_boards/message/97850
编辑3:没关系,但以防万一,我在Linux上运行FF。我读过的一些文章暗示这是一个问题。
编辑 4:添加:
pie.draw(createPieTable(), createPieOptions());
在附加孩子获得要显示的图形之后。这意味着示例的顺序是错误的。如果是这样,什么是最佳的?