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());
追加の子が表示するグラフを取得した後。これは、例の順序が間違っていることを意味します。もしそうなら、最適なものは何ですか?