1

問題:許可されていませんrenderBinaryrenderBinary(InputStream)タイプのメソッドはController、引数()には適用できません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);

}
4

1 に答える 1

3

戻るにはImgを作成する必要があります。JfreeChartは画像ではありません。

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

したがって、renderChart(String chartId){....チャートを作成する... renderBinary(img);のようなコントローラーがあります。}

JFreeChartから画像を作成するコード(http://www.jfree.org/phpBB2/viewtopic.php?t=113から)

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; 
} 
于 2012-04-05T13:24:44.637 に答える