2012-04-05 22 views
1

問題:renderBinaryを許可しません。タイプControllerrenderBinary(InputStream)メソッドは、引数(JFreeChart)には適用されません。PlayフレームワークでJFreeChartをレンダリングする方法

私はこのコントローラを持っている:

public static void index() { 

    // create a dataset...Default 

    DefaultPieDataset dataset = new DefaultPieDataset(); 

    dataset.setValue("Category 1", 43.2); 
    dataset.setValue("Category 2", 27.9); 
    dataset.setValue("Category 3", 79.5); 

    // create a chart... 
    JFreeChart chart = ChartFactory.createPieChart(
      "Sample", 
      dataset, 
      true, 
      true, 
      false 
    ); 

    List<User> usersA = Department.getUsersA(); 
    List<User> usersB = Department.getUsersB(); 


    render(usersA, usersB, chart); 

} 

答えて

3

あなたが返すようにIMGを作成する必要があります。 JfreeChartはイメージではありません。

また、画像を返すコントローラを1つ作成する必要があります。通常のレンダリング結果でイメージを返すことはできません。

レンダリングのようなコントローラーを使用します(renderChart(String chartId){.... ...グラフを作成... renderBinary(img); (http://www.jfree.org/phpBB2/viewtopic.php?t=113から)はJFreeChartから画像を作成ここ}

コード

JFreeChart chart = createChart(); 
... 
BufferedImage img = draw(chart, width, height); 
OutputStream out = response.getOutputStream(); 
JPEGImageEncoder encoder = 
JPEGCodec.createJPEGEncoder(out); 
JPEGEncodeParam param = 
encoder.getDefaultJPEGEncodeParam(img); 
param.setQuality(1.0f,true); 
encoder.encode(img,param); 
out.close(); 

protected BufferedImage draw(JFreeChart chart, int width, int height) 
{ 
BufferedImage img = 
new BufferedImage(width , height, 
BufferedImage.TYPE_INT_RGB); 
Graphics2D g2 = img.createGraphics(); 
chart.draw(g2, new Rectangle2D.Double(0, 0, width, height)); 
g2.dispose(); 
return img; 
} 
+0

iはガントチャートをwhantか?それはイメージではありません:( – Daniel

+0

あなたがビューでインタラクティブなJFreeChartコンポーネントを作成したい場合は、アプレットを見ています(そして、最近、ほとんどの人はJavascriptコンポーネントを好むでしょう - 数年前のFlash - 私は会社に勤めていましたが(今のところでさえ)、アプレットのメカニズムを使ってJavaをデプロイしています。 –

+0

ありがとうございます。 – Daniel

関連する問題