Playframework 如何在Play框架中呈现JFreeChart

Playframework 如何在Play框架中呈现JFreeChart,playframework,jfreechart,Playframework,Jfreechart,问题:不允许我renderBinary。类型Controller中的方法renderBinary(InputStream)不适用于参数(JFreeChart) 我有一个控制器: public static void index() { // create a dataset...Default DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("Category 1", 43.

问题:不允许我
renderBinary
。类型
Controller
中的方法
renderBinary(InputStream)
不适用于参数(
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);

}
公共静态无效索引(){
//创建数据集…默认值
DefaultPieDataset=新的DefaultPieDataset();
dataset.setValue(“1类”,43.2);
dataset.setValue(“2类”,27.9);
数据集。设定值(“第3类”,79.5);
//创建一个图表。。。
JFreeChart chart=ChartFactory.createPieChart(
“样本”,
数据集,
是的,
是的,
假的
);
List usersA=Department.getUsersA();
List usersB=Department.getUsersB();
呈现(用户SA、用户SB、图表);
}

您需要创建一个Img才能返回。JfreeChart不是图像

此外,还需要创建一个控制器来返回图像。无法在正常渲染结果中返回图像

因此,您将有一个控制器,如renderChart(String chartId){……制作图表……renderBinary(img);}

这里是从JFreeChart(从)创建图像的代码


如果我不是甘特图呢?这不可能是一个图像:(如果你想在你的视图中创建一个交互式JFreeChart组件,你正在看小程序。(现在,大多数人更喜欢Javascript组件——几年前的Flash——几年前的小程序)——尽管我在一家公司工作(甚至到目前为止)通过Applet机制部署Java。我构建了基于web的调度软件,可以免费联系:intelligenti.ca-很高兴免费推荐技术,如果有有偿工作,那就更高兴了!:)
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; 
}