代码
- public class PieChartPicture {
- public static void main(String[] args)
- {
- PieDataset dataset = getDataSet();
- JFreeChart chart = ChartFactory.createPieChart3D(
- " 项目进度分布",
- dataset,
- true,
- true,
- false
- );
- PiePlot3D plot=(PiePlot3D)chart.getPlot();
-
-
-
- plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));
-
- plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})"));
-
- chart.setBackgroundPaint(Color.white);
-
- plot.setForegroundAlpha(1.0f);
-
- plot.setCircular(true);
-
- Font font = new Font(" 黑体",Font.CENTER_BASELINE,20);
- TextTitle title = new TextTitle(" 项目状态分布");
- title.setFont(font);
- chart.setTitle(title);
- FileOutputStream fos_jpg = null;
- try {
- fos_jpg=new FileOutputStream("D:\\ 项目状态分布.jpg");
- ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,640,480,null);
- fos_jpg.close();
- } catch (Exception e) {
- }
- }
- private static PieDataset getDataSet() {
- DefaultPieDataset dataset = new DefaultPieDataset();
- dataset.setValue(" 市场前期", new Double(10));
- dataset.setValue(" 立项", new Double(15));
- dataset.setValue(" 计划", new Double(10));
- dataset.setValue(" 需求与设计", new Double(10));
- dataset.setValue(" 执行控制", new Double(35));
- dataset.setValue(" 收尾", new Double(10));
- dataset.setValue(" 运维",new Double(10));
- return dataset;
- }
- }
2) 采用servlet和struts的action方式输出 采用这种方式输出,不用生成图片。 A .servlet输出
代码
- public class PieByServlet extends HttpServlet{
- public void service(ServletRequest req, ServletResponse res)
- throws ServletException, IOException
- {
- res.setContentType("image/jpeg");
- PieDataset dataset = getDataSet();
- JFreeChart chart = ChartFactory.createPieChart3D(
- " 水果饼图",
- dataset,
- true,
- true,
- false );
-
-
- ChartUtilities.writeChartAsJPEG(res.getOutputStream(),100,chart,800,600,null);
- }
B .struts的action方式输出 只将这条语句加上try catch即可,并返回null。
代码
- try{
- ChartUtilities.writeChartAsJPEG(response.getOutputStream(),100,chart,800,600,null);
- } catch (Exception e) {
- }
- return null;
其实采用这两种方式与生成图片的方式改动并不大 加上语句response.setContentType("image/jpeg"); ChartUtilities.writeChartAsJPEG(new FileOutputStream("D:\\ 项目状态分布.jpg");,100,chart,640,480,null); 文件流改成response的输出流就可以了 hartUtilities.writeChartAsJPEG(response.getOutputStream(),100,chart,800,600,null);
3)jsp+servlet+javabean方式 1. Create ChartViewer servlet
代码
- public class ChartViewer extends HttpServlet {
- public void init() throws ServletException {
- }
-
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletE
xception, IOException {
-
- HttpSession session = request.getSession();
- BufferedImage chartImage = (BufferedImage) session.getAttribute("chartImage");
-
- response.setContentType("image/png");
-
- PngEncoder encoder = new PngEncoder(chartImage, false, 0, 9);
- response.getOutputStream().write(encoder.pngEncode());
- }
-
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
- doGet(request, response);
- }
-
- public void doPut(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
- }
-
- public void destroy() { }
- }
2. Create a servlet map in web.xml
|