<%@ page import="org.jfree.data.general.DefaultPieDataset"%>
<%@ page import="org.jfree.chart.*"%>
<%@ page import="org.jfree.chart.plot.*"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.labels.StandardPieToolTipGenerator"%>
<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="java.io.*"%><HTML> 
<HEAD> 
<META http-equiv=Content-Type content="text/html; charset=GBK"> 
<META NAME="Author" CONTENT="Alpha">
<TITLE>程序员学历情况调查表-By Alpha</TITLE> 
</HEAD> 
<BODY> 
<%
            DefaultPieDataset data = new DefaultPieDataset(); 
            //数据初始化
            data.setValue("高中以下",380); 
            data.setValue("高中",1620); 
            data.setValue("大专",6100); 
            data.setValue("本科",8310); 
            data.setValue("硕士",3520); 
            data.setValue("博士",180); 
            
            //HttpSession session = request.getSession();            PiePlot3D plot = new PiePlot3D(data);//生成一个3D饼图 
            //plot.setURLGenerator(new StandardPieURLGenerator("DegreedView.jsp"));//设定图片链接 
            JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true); 
            chart.setBackgroundPaint(java.awt.Color.white);//可选,设置图片背景色 
            chart.setTitle("程序员学历情况调查表-By Alpha");//可选,设置图片标题 
            plot.setToolTipGenerator(new StandardPieToolTipGenerator()); 
            StandardEntityCollection sec = new StandardEntityCollection(); 
            ChartRenderingInfo info = new ChartRenderingInfo(sec); 
            PrintWriter w = new PrintWriter(out);//输出MAP信息 
            //500是图片长度,300是图片高度
            //String filename = ServletUtilities.saveChartAsPNG(chart,500,300,info,session); 
            String filename = ServletUtilities.saveChartAsJPEG(chart,500,300,info,session); 
            ChartUtilities.writeImageMap(w,"map0",info,false);             String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%> <P ALIGN="CENTER"> 
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#map0"> 
</P> 
</BODY> 
</HTML>
java.lang.IllegalArgumentException: offset out of bounds
java.text.RuleBasedBreakIterator.checkOffset(RuleBasedBreakIterator.java:724)
java.text.RuleBasedBreakIterator.following(RuleBasedBreakIterator.java:737)
org.jfree.text.TextUtilities.nextLineBreak(TextUtilities.java:295)
org.jfree.text.TextUtilities.createTextBlock(TextUtilities.java:240)
org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:626)
org.jfree.chart.title.TextTitle.arrange(TextTitle.java:495)
org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1308)
org.jfree.chart.JFreeChart.draw(JFreeChart.java:1200)
org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1396)
org.jfree.chart.ChartUtilities.writeChartAsJPEG(ChartUtilities.java:410)
org.jfree.chart.ChartUtilities.saveChartAsJPEG(ChartUtilities.java:501)
org.jfree.chart.servlet.ServletUtilities.saveChartAsJPEG(ServletUtilities.java:255)
org.apache.jsp.map_jsp._jspService(map_jsp.java:100)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)我做了好几个demo 都是String filename = ServletUtilities.saveChartAsJPEG(chart,500,300,info,session); 这一句报 offset out of bounds
异常 我按照api文档穿的参数 貌似没有问题  真心不知道该怎么查了 有大神帮个忙吧 谢谢了 jfreechartoffset out of bounds

解决方案 »

  1.   

    参数不合法报错 
    org.jfree.chart.servlet.ServletUtilities.saveChartAsJPEG(ServletUtilities.java:255)
    可以定位到源码中看一下
      

  2.   

    试试这个:
    DefaultCategoryDataset dcd = new DefaultCategoryDataset();
    //I'm sure lignes contained at least 1 Zzz, and often more
    for (Iterator<Zzz> it = lignes.iterator(); it.hasNext();) {
       Zzz z = it.next();
       dcd.setValue(z.getDuree(), "Temps", z.getCode());
       dcd.setValue(z.getPrixVente(), "Prix de vente", z.getCode());
    }
    JFreeChart pie = pie = ChartFactory.createMultiplePieChart("", dcd, TableOrder.BY_ROW,
          false/* legend */, false/* tooltip */, false/* urls */);//tried various options like :
    //pie.clearSubtitles();
    pie.setBorderVisible(false);
    pie.setAntiAlias(true);
    pie.setTextAntiAlias(true);
    pie.getTitle().setFont(new Font("Arial", Font.BOLD, 8));
    pie.setBackgroundPaint(Color.white);//and others like
    PiePlot plot = (PiePlot) ((MultiplePiePlot) pie.getPlot())
       .getPieChart().getPlot();
    plot.setBackgroundPaint(Color.white);
    plot.setLabelFont(new Font("Arial", Font.PLAIN, 9));//and now the crash:
    BufferedImage bi = pie.createBufferedImage(600, 200);
    ImageIO.write(bi, "png", new File("C:\\test.png"));