You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

This page shows an example of how to use JFreeChart with wicket.

PieChartExamplePage.html

<html>
<body>
<img wicket:id="image">
</body>
</html>

PieChartExamplePage.java

import org.apache.wicket.markup.html.WebPage;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class PieChartExamplePage extends WebPage {

	public PieChartExamplePage() {
		DefaultPieDataset d = new DefaultPieDataset();
		d.setValue("JavaWorld", new Integer(75));
		d.setValue("Other", new Integer(25));
		JFreeChart chart = ChartFactory.createPieChart("Sample Pie Chart", d,
                 true,		// Show legend  
                 true,		// Show tooltips
                 true);		// Show urls
        //chart.setBackgroundPaint(Color.white);
        //chart.setBorderVisible(false);
		add(new JFreeChartImage("image", chart, 300, 300));
	}

}

JFreeChartImage.java

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.apache.wicket.Resource;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.image.resource.DynamicImageResource;
import org.apache.wicket.model.Model;
import org.apache.wicket.protocol.http.WebResponse;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;

public class JFreeChartImage extends Image {
	
    private int width;
    private int height;

	public JFreeChartImage(String id, JFreeChart chart, int width, int height){
		super(id, new Model(chart));
		this.width = width;
		this.height = height;
	}

	@Override
    protected Resource getImageResource() {
        return new DynamicImageResource(){
			@Override
			protected byte[] getImageData() {
		        JFreeChart chart = (JFreeChart)getModelObject();
		        ByteArrayOutputStream stream = new ByteArrayOutputStream();
		        try {
					ChartUtilities.writeChartAsPNG(stream, chart, width, height);
				} catch (IOException e) {
		        	System.out.println("IOException: "+e.getMessage());
				}
		        return stream.toByteArray();
			}

			@Override
		    protected void setHeaders(WebResponse response) {
		        if (isCacheable()) {
		            super.setHeaders(response);
		        } else {
		            response.setHeader("Pragma", "no-cache");
		            response.setHeader("Cache-Control", "no-cache");
		            response.setDateHeader("Expires", 0);
		            response.setHeader("Cache-Control", "private");
		            response.setHeader("Cache-Control", "no-store");
		        }
		    }
        };
    }

}
  • No labels