2012-10-07 39 views
1

我正在使用GWT 2.5 RC1和GAE 1.7.2。 我使用UiRenderer Rendering HTML for Cells創建了一個自定義單元格。
我想渲染使用谷歌圖表工具API一個圖表GWT Getting Started Using the Google Chart Tools with GWT
下面有渲染的方法,這是不行的片段。

有誰知道,如何渲染自定義單元格中的谷歌圖表?

如果他/她給我一些指示或示例代碼,我將不勝感激。 在此先感謝。在GWT 2.5自定義單元格中渲染Google Chart(我用過UiRenderer)

@Override 
public void render(com.google.gwt.cell.client.Cell.Context context, Value value, final SafeHtmlBuilder sb) { 
    final HTMLPanel test = new HTMLPanel(""); 
    Runnable onLoadCallback = new Runnable() { 
    public void run() { 
     //Panel panel = RootPanel.get(); 

     // Create a pie chart visualization. 
     PieChart pie = new PieChart(createTable(), createOptions()); 

     pie.addSelectHandler(GoogleCharts.createSelectHandler(pie)); 
     test.add(pie); 
     } 
    }; 
    // Load the visualization api, passing the onLoadCallback to be called 
    // when loading is done. 
    VisualizationUtils.loadVisualizationApi(onLoadCallback, PieChart.PACKAGE); 

    sb.appendHtmlConstant(test.getElement().getInnerHTML()); 
    renderer.render(sb); 
} 

回答

0

它看起來像你有一個競爭條件。當你調用sb.appendHTMLConstant時,測試元素可能是空的,因爲onLoadCallback尚未被觸發。如果您將最後兩行移到回調的末尾,則會消除競爭條件。

@Override 
public void render(com.google.gwt.cell.client.Cell.Context context, Value value, final SafeHtmlBuilder sb) { 
    final HTMLPanel test = new HTMLPanel(""); 

    Runnable onLoadCallback = new Runnable() { 
     @Override 
     public void run() { 
      // Create a pie chart visualization. 
      PieChart pie = new PieChart(createTable(), createOptions()); 
      pie.addSelectHandler(GoogleCharts.createSelectHandler(pie)); 
      test.add(pie); 

      sb.appendHtmlConstant(test.getElement().getInnerHTML()); 
      renderer.render(sb); 
     } 
    }; 

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

不幸的是,它也不工作。 Line'renderer.render(sb);'應該在onLoadCallback(...)方法外部正常工作。其他想法是受歡迎的。 – Miltos

+0

當您在行sb.appendHtmlConstant(test.getElement()。getInnerHTML())上設置斷點時,測試元素的內容是什麼? – LoneWolf

+0

測試元素的內容爲空。 – Miltos

相關問題