<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>strawman81</title>
    <description></description>
    <link>http://strawman81.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>JFreeChart 好文收集</title>
        <author>strawman81</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://strawman81.javaeye.com">strawman81</a>&nbsp;
                    链接：<a href="http://strawman81.javaeye.com/blog/139536" style="color:red;">http://strawman81.javaeye.com/blog/139536</a>&nbsp;
          发表时间: 2007年11月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
<div twffan="done" style="MARGIN-TOP: 1px; MARGIN-LEFT: 15px">
<h2><a href="http://laiseeme.javaeye.com/blog/105767" title="永久链接：JFreeChart中柱状图的详细设置">JFreeChart中柱状图的详细设置</a> </h2>
</div>
<div twffan="done" style="MARGIN-TOP: 10px; MARGIN-LEFT: 15px; OVERFLOW: auto">
<table width="100%">
    <tbody>
        <tr>
            <td>
            <p>柱状图： bar charts (regular and stacked, with an optional 3D effect)，用到的主要类如下:</p>
            <p>　org.jfree.chart.JFreeChart：图表对象，任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象</p>
            <p>　org.jfree.data.category.CategoryDataset:数据集对象，用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类</p>
            <p>　org.jfree.chart.plot.CategoryPlot：图表区域对象，基本上这个对象决定着什么样式的图表，创建该对象的时候需要Axis、Renderer以及数据集对象的支持</p>
            <p>　org.jfree.chart.axis.CategoryAxis：用于处理图表的两个轴：纵轴和横轴</p>
            <p>　org.jfree.chart.render.CategoryRender：负责如何显示一个图表对象</p>
            <p>　org.jfree.chart.urls.CategoryURLGenerator:用于生成Web图表中每个项目的鼠标点击链接</p>
            <p>　CategoryToolTipGenerator:用于生成图象的帮助提示，不同类型图表对应不同类型的工具提示类</p>
            <p>　org.jfree.chart.axis.ValueAxis：用于处理图表中的柱</p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div class="topic_summary" twffan="done">
<table width="100%">
    <tbody>
        <tr>
            <td valign="bottom" width="90%">14:35&nbsp;&nbsp;|&nbsp;&nbsp; <a href="javascript:Element.toggle('link105767');">永久链接</a>&nbsp;&nbsp;|&nbsp;&nbsp; 浏览&nbsp;(715)&nbsp;&nbsp;|&nbsp;&nbsp; <a href="http://laiseeme.javaeye.com/blog/105767#comments">评论</a>&nbsp;(1)&nbsp;&nbsp;| &nbsp;&nbsp; <a href="http://laiseeme.javaeye.com/admin/favorite_blog/342472">收藏</a>&nbsp;&nbsp;|&nbsp;&nbsp; <a href="http://laiseeme.javaeye.com/category/66236?category=17230">jfreechart</a>&nbsp;&nbsp;|&nbsp;&nbsp; <span twffan="done" style="COLOR: #006699"></span></td>
            <td width="10%">&nbsp;</td>
        </tr>
    </tbody>
</table>
</div>
<div class="topic_link" id="link105767" twffan="done" style="DISPLAY: none">
<table border="0" align="center" width="90%">
    <tbody>
        <tr>
            <td height="30" align="left"><span class="date_show" twffan="done">永久链接</span></td>
        </tr>
        <tr>
            <td align="left"><a href="http://laiseeme.javaeye.com/blog/105767">http://laiseeme.javaeye.com/blog/105767</a> </td>
        </tr>
    </tbody>
</table>
</div>
<div twffan="done"><a name="comments"></a>
<div twffan="done" style="BORDER-TOP: gray 1px solid; MARGIN-TOP: 15px">
<div id="comment-list" twffan="done" style="MARGIN: 10px 20px 0px">
<div twffan="done">
<table width="100%">
    <tbody>
        <tr valign="top">
            <td width="50%"><strong class="title">评论</strong> &nbsp;&nbsp;&nbsp;共 1 条 </td>
            <td align="right" width="50%"><a href="javascript:Field.focus('message');">发表评论</a> </td>
        </tr>
    </tbody>
</table>
</div>
<div twffan="done" style="MARGIN-TOP: 10px">
<div id="post_342474" twffan="done">
<div class="light_b" twffan="done" style="PADDING-RIGHT: 2px; MARGIN-TOP: 10px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; PADDING-TOP: 2px"><a href="http://laiseeme.javaeye.com/">laiseeme</a> &nbsp;&nbsp;&nbsp; 2007-07-26 14:36 </div>
<div twffan="done" style="MARGIN-TOP: 5px">
<table width="100%">
    <tbody>
        <tr>
            <td>
            <p>&nbsp;</p>
            <div class="code_title" twffan="done">代码</div>
            <div class="code_div" twffan="done">
            <div class="dp-highlighter" twffan="done">
            <div class="bar" twffan="done"></div>
            <ol class="dp-xml">
                <li class="alt"><span twffan="done"><span twffan="done">/** &nbsp;&nbsp;</span></span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">*&nbsp;类库 &nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">*&nbsp;1、jfreechart-1.0.5.jar、jcommon-1.0.9.jar、gnujaxp.jar &nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*&nbsp;2、jbcl.jar、dx.jar、beandt.jar&nbsp;由JBuilder2006的lib下提供 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*/ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">package&nbsp;org.jfree.demo; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;java.io.*; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;org.jfree.data.*; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;org.jfree.chart.*; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;org.jfree.chart.plot.*; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;org.jfree.data.category.*; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;java.awt.Color; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;org.jfree.chart.labels.StandardCategoryItemLabelGenerator; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;java.awt.Font; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;org.jfree.chart.axis.AxisLocation; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;java.awt.event.WindowAdapter; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;java.awt.event.WindowEvent; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;java.awt.Toolkit; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">import&nbsp;java.awt.Dimension; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">/** &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*&nbsp;</span><span class="tag" twffan="done">&lt;</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">Title:&nbsp;Java开发手册</span><span class="tag" twffan="done">&lt;/</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">* &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*&nbsp;</span><span class="tag" twffan="done">&lt;</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">Description:&nbsp;适合中高级使用者</span><span class="tag" twffan="done">&lt;/</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">* &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*&nbsp;</span><span class="tag" twffan="done">&lt;</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">Copyright:&nbsp;Copyright&nbsp;(c)&nbsp;2007</span><span class="tag" twffan="done">&lt;/</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">* &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*&nbsp;</span><span class="tag" twffan="done">&lt;</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">Company:&nbsp;lingbrother</span><span class="tag" twffan="done">&lt;/</span><span class="tag-name" twffan="done">p</span><span class="tag" twffan="done">&gt;</span><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">* &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*&nbsp;@author&nbsp;lingbrother &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*&nbsp;@version&nbsp;1.0 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">*/ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">public&nbsp;class&nbsp;BarChartDemo&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;public&nbsp;BarChartDemo()&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;super(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;throws&nbsp;IOException{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CategoryDataset&nbsp;</span><span class="attribute" twffan="done">dataset</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">getDataSet</span><span twffan="done">(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFreeChart&nbsp;</span><span class="attribute" twffan="done">chart</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">ChartFactory</span><span twffan="done">.createBarChart3D( &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;招生信息总览&quot;,&nbsp;//&nbsp;图表标题 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;应报与实报对照&quot;,&nbsp;//&nbsp;目录轴的显示标签 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;人数&quot;,&nbsp;//&nbsp;数值轴的显示标签 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset,&nbsp;//&nbsp;数据集 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PlotOrientation.VERTICAL,&nbsp;//&nbsp;图表方向：水平、垂直 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true,&nbsp;&nbsp;//&nbsp;是否显示图例(对于简单的柱状图必须是false) &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true,&nbsp;&nbsp;//&nbsp;是否生成工具 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true&nbsp;&nbsp;//&nbsp;是否生成URL链接 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CategoryPlot&nbsp;</span><span class="attribute" twffan="done">plot</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">chart</span><span twffan="done">.getCategoryPlot();//获得图表区域对象 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置图表的纵轴和横轴org.jfree.chart.axis.CategoryAxis &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.jfree.chart.axis.CategoryAxis&nbsp;</span><span class="attribute" twffan="done">domainAxis</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">plot</span><span twffan="done">.getDomainAxis(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;domainAxis.setLowerMargin(0.1);//设置距离图片左端距离此时为10% &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;domainAxis.setUpperMargin(0.1);//设置距离图片右端距离此时为百分之10 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;domainAxis.setCategoryLabelPositionOffset(10);//图表横轴与标签的距离(10像素) &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;domainAxis.setCategoryMargin(0.2);//横轴标签之间的距离20% &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//domainAxis.setMaximumCategoryLabelLines(1); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//domainAxis.setMaximumCategoryLabelWidthRatio(0); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设定柱子的属性 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.jfree.chart.axis.ValueAxis&nbsp;</span><span class="attribute" twffan="done">rangeAxis</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">plot</span><span twffan="done">.getRangeAxis(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rangeAxis.setUpperMargin(0.1);//设置最高的一个柱与图片顶端的距离(最高柱的10%) &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置图表的颜色 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.jfree.chart.renderer.category.BarRenderer3D&nbsp;renderer; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute" twffan="done">renderer</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">new</span><span twffan="done">&nbsp;org.jfree.chart.renderer.category.BarRenderer3D(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setBaseOutlinePaint(Color.red); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setSeriesPaint(0,&nbsp;new&nbsp;Color(0,&nbsp;255,&nbsp;255));//计划柱子的颜色为青色 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setSeriesOutlinePaint(0,Color.BLACK);//边框为黑色 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setSeriesPaint(1,&nbsp;new&nbsp;Color(0,&nbsp;255,&nbsp;0));//实报柱子的颜色为绿色 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setSeriesOutlinePaint(1,Color.red);//边框为红色 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setItemMargin(0.1);//组内柱子间隔为组宽的10% &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示每个柱的数值，并修改该数值的字体属性 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setItemLabelGenerator(new&nbsp;StandardCategoryItemLabelGenerator()); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setItemLabelFont(new&nbsp;Font(&quot;黑体&quot;,Font.BOLD,12));//12号黑体加粗 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setItemLabelPaint(Color.black);//字体为黑色 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer.setItemLabelsVisible(true); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setRenderer(renderer);//使用我们设计的效果 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置纵横坐标的显示位置 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);//学校显示在下端(柱子竖直)或左侧(柱子水平) &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);&nbsp;//人数显示在下端(柱子水平)或左侧(柱子竖直) &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;</span><span class="attribute" twffan="done">file</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">new</span><span twffan="done">&nbsp;File(&quot;c:/student.png&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChartUtilities.saveChartAsPNG(file,chart,400,300);//把报表保存为文件 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch&nbsp;(Exception&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;</span><span class="attribute" twffan="done">s</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">e</span><span twffan="done">.getLocalizedMessage(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute" twffan="done">s</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">e</span><span twffan="done">.getMessage(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute" twffan="done">s</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">e</span><span twffan="done">.toString(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//将生成的报表放到预览窗口中 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final&nbsp;ChartFrame&nbsp;</span><span class="attribute" twffan="done">preview</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">new</span><span twffan="done">&nbsp;ChartFrame(&quot;招生信息&quot;,chart); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview.addWindowListener(new&nbsp;WindowAdapter()&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;windowClosing(final&nbsp;WindowEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview.dispose(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview.pack(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//调整预览窗口的大小和位置,适合屏幕，并且居中 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;</span><span class="attribute" twffan="done">screenSize</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">Toolkit</span><span twffan="done">.getDefaultToolkit().getScreenSize(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview.setSize(screenSize.width,screenSize.height-50);//适合屏幕，50表示把工具栏要考虑在内 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dimension&nbsp;</span><span class="attribute" twffan="done">frameSize</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">preview</span><span twffan="done">.getSize(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(frameSize.height&nbsp;</span><span class="tag" twffan="done">&gt;</span><span twffan="done">&nbsp;screenSize.height)&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute" twffan="done">frameSize.height</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">screenSize</span><span twffan="done">.height; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(frameSize.width&nbsp;</span><span class="tag" twffan="done">&gt;</span><span twffan="done">&nbsp;screenSize.width)&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute" twffan="done">frameSize.width</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">screenSize</span><span twffan="done">.width; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview.setLocation(&nbsp;(screenSize.width&nbsp;-&nbsp;frameSize.width)&nbsp;/&nbsp;2, &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(screenSize.height&nbsp;-&nbsp;frameSize.height-50)&nbsp;/&nbsp;2); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//显示报表预览窗口 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview.setVisible(true); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;/** &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;*&nbsp;获取一个演示用的组合数据集对象 &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;*&nbsp;@return &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;private&nbsp;static&nbsp;CategoryDataset&nbsp;getDataSet()&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultCategoryDataset&nbsp;</span><span class="attribute" twffan="done">dataset</span><span twffan="done">&nbsp;=&nbsp;</span><span class="attribute-value" twffan="done">new</span><span twffan="done">&nbsp;DefaultCategoryDataset(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.addValue(200,&nbsp;&quot;计划&quot;,&nbsp;&quot;清华大学&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.addValue(400,&nbsp;&quot;实报&quot;,&nbsp;&quot;清华大学&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.addValue(100,&nbsp;&quot;计划&quot;,&nbsp;&quot;天津大学&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.addValue(205,&nbsp;&quot;实报&quot;,&nbsp;&quot;天津大学&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.addValue(200,&nbsp;&quot;计划&quot;,&nbsp;&quot;郑州大学&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataset.addValue(285,&nbsp;&quot;实报&quot;,&nbsp;&quot;郑州大学&quot;); &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dataset; &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
                <li class="alt"><span twffan="done">&nbsp;&nbsp;</span></li>
                <li class=""><span twffan="done">}&nbsp; &nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<p><br />
</p>
<div style="MARGIN-TOP: 1px; MARGIN-LEFT: 15px">
<h2><a href="http://ltc603.javaeye.com/blog/30207" title="永久链接：JfreeChart学习总结 ">JfreeChart学习总结 </a></h2>
</div>
<div style="MARGIN-TOP: 5px; MARGIN-LEFT: 15px"><strong>关键字:</strong> &nbsp; JfreeChart&nbsp;&nbsp;&nbsp;&nbsp; </div>
<div style="MARGIN-TOP: 10px; MARGIN-LEFT: 15px; OVERFLOW: auto">
<table width="100%">
    <tbody>
        <tr>
            <td>
            <p>自己最近学习了JfreeChart的使用，觉得这个冬冬的功能非常强大，总结一下。主要介绍JfreeChart生成图片的几种方式</p>
            <p>先从网上找点介绍。 <br />
            <strong>一、简介</strong> <br />
            WW 的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这两者之间有着天壤之别，虽然对于数据获取、业务处理等方面基本类似，但是最大的差别在于用户界面。为了能在web浏览器上显示要求用户界面使用 HTML以及图片的方式来展现数据，而传统的一些利用操作系统本身的控件来开发的用户界面无法适应琳琅满目的客户端，因此在这里也变得无能为力。回到本文的题目上来，为了创建一个可以在web浏览器上查看到图表一般有两种做法：第一种就是使用applet利用java本身对图形的支持来显示一个图表；第二 种就是直接在web服务器端生成好图表图片文件后发送给浏览器。第一种方式显然对于客户端要求太高，随着现在主流浏览器放弃对JAVA的支持后，这种方式 只适合一些局域网的应用，而对于因特网的环境就显得不太适合。因此我们下面将介绍一个JAVA的图表引擎JFreeChart用来产生基于WEB的图表。 <br />
            JFreeChart 项目简介 JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目，它主要用来各种各样的图表，这些图表包括：饼图、柱状图(普 通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。 <br />
            <strong><br />
            二、JFreeChart获取。</strong> <br />
            JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目，该公司的主要产品有如下： <br />
            1.JFreeReport ：报表解决工具 <br />
            2.JFreeChart:Java 图形解决方案（Application/Applet/Servlet/Jsp） <br />
            3.JCommon ：JFreeReport和JFreeChart的公共类库 <br />
            4.JFreeDesigner ：JFreeReport的报表设计工具 <br />
            我们可以从jfree官方网站上获取最新版本和相关资料（但是jfree的document需要40美金才能获取）， <br />
            获取地址：http://www.jfree.org/jfreechart/index.html（同时可以获得简明介绍） <br />
            我们以当前最新版本：jfreechart-1.0.1.zip为例子进行说明。</p>
            <p><strong>三、JFreeChart配置安装</strong> <br />
            1 、解压jfreechart-1.0.1.zip.zip到指定位置，其中source是jfreechart的源码，jfreechart-1.0.1-demo.jar 是例子程序，可以先运行一下看看各种效果，就知道他的nb之处了。 <br />
            2 、为了配置成功，我们需要关注的文件有如下三个： <br />
            设置classpath。加入下面三个jar包。 <br />
            jfreechart-1.0.1.jar 、jcommon-1.0.0.jar、gnujaxp.jar <br />
            加上第三个jar包有时web.xml会报错，把它去掉就好了。 <br />
            至此jfreechart的配置就完成了，下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类 <br />
            结构设计前后兼容性不是很好，不同版本的jfreechart中类库结构可能不一样，有时候可能需要查源码。如果是中文显示的时候可能依据观感需要改变源码的字体。 </p>
            <p><strong>四、JFreeChart功能介绍 </strong><br />
            JFreeChart 目前是最好的java图形解决方案，基本能够解决目前的图形方面的需求，主要包括如下几个方面： <br />
            pie charts (2D and 3D) ：饼图（平面和立体） <br />
            bar charts (regular and stacked, with an optional 3D effect) ：柱状图 <br />
            line and area charts ：曲线图 <br />
            scatter plots and bubble charts <br />
            time series, high/low/open/close charts and candle stick charts ：时序图 <br />
            combination charts ：复合图 <br />
            Pareto charts <br />
            Gantt charts ：甘特图 <br />
            wind plots, meter charts and symbol charts <br />
            wafer map charts <br />
            ( 态图表,饼图(二维和三维) , 柱状图 ( 水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表) <br />
            图形可以导出成PNG和JPEG格式，同时还可以与PDF和EXCEL关联 <br />
            JFreeChart 核心类库介绍： <br />
            研究jfreechart源码发现源码的主要由两个大的包组成：org.jfree.chart,org.jfree.data。其中前者主要与图形 <br />
            本身有关，后者与图形显示的数据有关。具体研究如果大家有兴趣的话可以自己研究 。 <br />
            核心类主要有： <br />
            org.jfree.chart.JFreeChart ：图表对象，任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象 <br />
            org.jfree.data.category.XXXDataSet: 数据集对象，用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类 <br />
            org.jfree.chart.plot.XXXPlot ：图表区域对象，基本上这个对象决定着什么样式的图表，创建该对象的时候需要Axis、Renderer以及数据集对象的支持 <br />
            org.jfree.chart.axis.XXXAxis ：用于处理图表的两个轴：纵轴和横轴 <br />
            org.jfree.chart.render.XXXRender ：负责如何显示一个图表对象 <br />
            org.jfree.chart.urls.XXXURLGenerator: 用于生成Web图表中每个项目的鼠标点击链接 <br />
            XXXXXToolTipGenerator: 用于生成图象的帮助提示，不同类型图表对应不同类型的工具提示类 </p>
            <p>个人感觉JFreeChart可以满足大部分图片创建的需要，美中不足的是：对字体的设置做的不够好，特别是使用中文的时候字体很不清晰。因为这个原因建议你自己去修改他的源代码，最好使用properties文件去设置字体.还有就是文档要钱所以要多花点时间去看源代码。或多上社区. </p>
            <p><strong>五．开始开发 </strong><br />
            对JfreeChart有了初步了解并做好准备工作之后，开始作例子程序试验。在这里我只介绍饼图的做法，而这张图采用不同的方式进行输出，其他类型的图片可以参考jfreechart提供的例子，做法都差不多。 </p>
            <p><span style="COLOR: red">1） 直接生成图片</span> <br />
            </p>
            <div class="code_title">代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;PieChartPicture&nbsp;{ &nbsp;&nbsp;</span></span></li>
                <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>{ &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;PieDataset&nbsp;dataset&nbsp;=&nbsp;getDataSet(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;JFreeChart&nbsp;chart&nbsp;=&nbsp;ChartFactory.createPieChart3D( &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="string">&quot;&nbsp;项目进度分布&quot;</span><span>,&nbsp;</span><span class="comment">//&nbsp;chart&nbsp;title </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;dataset,</span><span class="comment">//&nbsp;data </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">true</span><span>,</span><span class="comment">//&nbsp;include&nbsp;legend </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">true</span><span>, &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">false</span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;); &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;PiePlot3D&nbsp;&nbsp;plot=(PiePlot3D)chart.getPlot(); &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//&nbsp;图片中显示百分比:默认方式 </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//plot.setLabelGenerator(new&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT)); </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;图片中显示百分比:自定义方式，{0}&nbsp;表示选项，&nbsp;{1}&nbsp;表示数值，&nbsp;{2}&nbsp;表示所占比例&nbsp;,小数点后两位 </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;plot.setLabelGenerator(</span><span class="keyword">new</span><span>&nbsp;StandardPieSectionLabelGenerator(</span><span class="string">&quot;{0}={1}({2})&quot;</span><span>,&nbsp;NumberFormat.getNumberInstance(),&nbsp;</span><span class="keyword">new</span><span>&nbsp;DecimalFormat(</span><span class="string">&quot;0.00%&quot;</span><span>)));&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;图例显示百分比:自定义方式，&nbsp;{0}&nbsp;表示选项，&nbsp;{1}&nbsp;表示数值，&nbsp;{2}&nbsp;表示所占比例&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;plot.setLegendLabelGenerator(</span><span class="keyword">new</span><span>&nbsp;StandardPieSectionLabelGenerator(</span><span class="string">&quot;{0}={1}({2})&quot;</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;设置背景色为白色&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>chart.setBackgroundPaint(Color.white);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;指定图片的透明度(0.0-1.0)&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;plot.setForegroundAlpha(</span><span class="number">1</span><span>.0f);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;指定显示的饼图上圆形(false)还椭圆形(true)&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>plot.setCircular(</span><span class="keyword">true</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;设置图标题的字体&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>Font&nbsp;font&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Font(</span><span class="string">&quot;&nbsp;黑体&quot;</span><span>,Font.CENTER_BASELINE,</span><span class="number">20</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>TextTitle&nbsp;title&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;TextTitle(</span><span class="string">&quot;&nbsp;项目状态分布&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>title.setFont(font);&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>chart.setTitle(title);&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>FileOutputStream&nbsp;fos_jpg&nbsp;=&nbsp;</span><span class="keyword">null</span><span>;&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="keyword">try</span><span>&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos_jpg=</span><span class="keyword">new</span><span>&nbsp;FileOutputStream(</span><span class="string">&quot;D:\\&nbsp;项目状态分布.jpg&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChartUtilities.writeChartAsJPEG(fos_jpg,</span><span class="number">100</span><span>,chart,</span><span class="number">640</span><span>,</span><span class="number">480</span><span>,</span><span class="keyword">null</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos_jpg.close();&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;}&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span></span><span class="keyword">private</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;PieDataset&nbsp;getDataSet()&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>DefaultPieDataset&nbsp;dataset&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DefaultPieDataset();&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>dataset.setValue(</span><span class="string">&quot;&nbsp;市场前期&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">10</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>dataset.setValue(</span><span class="string">&quot;&nbsp;立项&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">15</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>dataset.setValue(</span><span class="string">&quot;&nbsp;计划&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">10</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>dataset.setValue(</span><span class="string">&quot;&nbsp;需求与设计&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">10</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>dataset.setValue(</span><span class="string">&quot;&nbsp;执行控制&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">35</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>dataset.setValue(</span><span class="string">&quot;&nbsp;收尾&quot;</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">10</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>dataset.setValue(</span><span class="string">&quot;&nbsp;运维&quot;</span><span>,</span><span class="keyword">new</span><span>&nbsp;Double(</span><span class="number">10</span><span>));&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="keyword">return</span><span>&nbsp;dataset;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>} &nbsp;&nbsp;</span></li>
                <li class="alt"><span>}&nbsp;&nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script>
            <p>&nbsp;</p>
            <p><span style="COLOR: red">2) 采用servlet和struts的action方式输出 </span><br />
            采用这种方式输出，不用生成图片。 <br />
            A ．servlet输出 <br />
            </p>
            <div class="code_title">代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;PieByServlet&nbsp;</span><span class="keyword">extends</span><span>&nbsp;HttpServlet{&nbsp; &nbsp;&nbsp;</span></span></li>
                <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;service(ServletRequest&nbsp;req,&nbsp;ServletResponse&nbsp;res)&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="keyword">throws</span><span>&nbsp;ServletException,&nbsp;IOException&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>{&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;res.setContentType(</span><span class="string">&quot;image/jpeg&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;PieDataset&nbsp;dataset&nbsp;=&nbsp;getDataSet();&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;JFreeChart&nbsp;chart&nbsp;=&nbsp;ChartFactory.createPieChart3D(&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="string">&quot;&nbsp;水果饼图&quot;</span><span>,&nbsp;</span><span class="comment">//&nbsp;chart&nbsp;title&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;dataset,</span><span class="comment">//&nbsp;data&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">true</span><span>,&nbsp;</span><span class="comment">//&nbsp;include&nbsp;legend&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">true</span><span>,&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">false</span><span>&nbsp;);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span><span class="comment">//设置图表属性 </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span></span><span class="comment">//&nbsp;输出图片&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;ChartUtilities.writeChartAsJPEG(res.getOutputStream(),</span><span class="number">100</span><span>,chart,</span><span class="number">800</span><span>,</span><span class="number">600</span><span>,</span><span class="keyword">null</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>}&nbsp;&nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script><br />
            B ．struts的action方式输出 <br />
            只将这条语句加上try catch即可，并返回null。 <br />
            <div class="code_title">代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">try</span><span>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
                <li class=""><span>ChartUtilities.writeChartAsJPEG(response.getOutputStream(),</span><span class="number">100</span><span>,chart,</span><span class="number">800</span><span>,</span><span class="number">600</span><span>,</span><span class="keyword">null</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>} &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">null</span><span>;&nbsp;&nbsp;&nbsp;</span></li>
            </ol>
            </div>
            </div>
            <script>render_code();</script>
            <p>&nbsp;</p>
            <p>其实采用这两种方式与生成图片的方式改动并不大 <br />
            加上语句response.setContentType(&quot;image/jpeg&quot;); <br />
            ChartUtilities.writeChartAsJPEG(new FileOutputStream(&quot;D:\\ 项目状态分布.jpg&quot;);,100,chart,640,480,null); <br />
            文件流改成response的输出流就可以了 <br />
            hartUtilities.writeChartAsJPEG(response.getOutputStream(),100,chart,800,600,null); </p>
            <p><span style="COLOR: red">3）jsp＋servlet＋javabean方式</span> <br />
            1. Create ChartViewer servlet <br />
            </p>
            <div class="code_title">代码</div>
            <div class="code_div">
            <div class="dp-highlighter">
            <div class="bar"></div>
            <ol class="dp-j">
                <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;ChartViewer&nbsp;</span><span class="keyword">extends</span><span>&nbsp;HttpServlet&nbsp;{&nbsp; &nbsp;&nbsp;</span></span></li>
                <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;init()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ServletException&nbsp;{ &nbsp;&nbsp;</span></li>
                <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span></span><span class="comment">//Process&nbsp;the&nbsp;HTTP&nbsp;Get&nbsp;request </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;doGet(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ServletException,&nbsp;IOException&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span></span><span class="comment">//&nbsp;get&nbsp;the&nbsp;chart&nbsp;from&nbsp;session </span><span>&nbsp;&nbsp;</span></li>
                <li class="alt"><span>HttpSession&nbsp;session&nbsp;=&nbsp;request.getSession();&nbsp; &nbsp;&nbsp;</span></li>
                <li class=""><span>BufferedImage&nbsp;chartImage&nbsp;=&nbsp;(BufferedImage)&nbsp;session.getAttribute(</span><span class="string">&quot;chartImage&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;set&nbsp;the&nbsp;content&nbsp;type&nbsp;so&nbsp;the&nbsp;browser&nbsp;can&nbsp;see&nbsp;this&nbsp;as&nbsp;a&nbsp;picture&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>response.setContentType(</span><span class="string">&quot;image/png&quot;</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//&nbsp;send&nbsp;the&nbsp;picture&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span>PngEncoder&nbsp;encoder&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;PngEncoder(chartImage,&nbsp;</span><span class="keyword">false</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;</span><span class="number">9</span><span>);&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span>response.getOutputStream().write(encoder.pngEncode()); &nbsp;&nbsp;</span></li>
                <li class=""><span>}&nbsp; &nbsp;&nbsp;</span></li>
                <li class="alt"><span></span><span class="comment">//Process&nbsp;the&nbsp;HTTP&nbsp;Post&nbsp;request&nbsp; </span><span>&nbsp;&nbsp;</span></li>
                <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;doPost(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ServletException,&nbsp;IOException&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
 </ol></div></div></td></tr></tbody></table></div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://strawman81.javaeye.com/blog/139536#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 09 Nov 2007 17:46:51 +0800</pubDate>
        <link>http://strawman81.javaeye.com/blog/139536</link>
        <guid>http://strawman81.javaeye.com/blog/139536</guid>
      </item>
          <item>
        <title>Apache + Mongrel 设置</title>
        <author>strawman81</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://strawman81.javaeye.com">strawman81</a>&nbsp;
                    链接：<a href="http://strawman81.javaeye.com/blog/126270" style="color:red;">http://strawman81.javaeye.com/blog/126270</a>&nbsp;
          发表时间: 2007年09月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Ubuntu下，打开/etc/apache2/httpd.conf,键入下面段落：<br />
<br />
<span class="tpc_content">&lt;VirtualHost yourip&gt;<br />
&nbsp;  AddDefaultCharset utf-8<br />
&nbsp;  ServerName www.yourhost.com<br />
&nbsp;  DocumentRoot /path/to/railsapp/public<br />
&nbsp;  ErrorDocument 500 /500.html<br />
&nbsp;  ErrorDocument 404 /404.html<br />
&nbsp;  ProxyPass / <a href="http://localhost:3000/" target="_blank">http://localhost:3000/</a><br />
&nbsp;  ProxyPassReverse / <a href="http://localhost:3000/" target="_blank">http://localhost:3000/</a><br />
&nbsp;  ProxyPass /images !<br />
&nbsp;  ProxyPass /stylesheets !<br />
&nbsp;  ProxyPass /javascripts !<br />
&nbsp;  #continue with other static files that should be served by apache<br />
<br />
&nbsp;  Alias /images  /path/to/railsapp/public/images<br />
&nbsp;  Alias /stylesheets /path/to/railsapp/public/stylesheets<br />
&nbsp;  Alias /javascripts  /path/to/railsapp/public/javascripts<br />
&nbsp;  #continue with aliases for static content<br />
<br />
&nbsp;  &lt;Proxy *&gt;<br />
&nbsp;  &nbsp; Order deny,allow<br />
&nbsp;  &nbsp; Allow from all<br />
&nbsp;  &lt;/Proxy&gt;<br />
&nbsp;  &lt;Directory  /path/to/railsapp/public/&gt;<br />
&nbsp;  &nbsp;   Options Indexes FollowSymLinks<br />
&nbsp;  &nbsp;   Order allow,deny<br />
&nbsp;  &nbsp;   allow from all<br />
&nbsp;  &lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;<br />
<br />
启动<br />
mongrel_rails start -d -p 3000 -e production -P /path/to/railsapp/log/mongrel-1.pid</span><br />
这样应该就可以通过www.yourhost.com访问Rails app了。<br />
转自：<br />
<a href="http://www.agiletao.com/read.php?tid=371" target="_blank">http://www.agiletao.com/read.php?tid=371</a>
          <br/><br/>
          <span style="color:red;">
            <a href="http://strawman81.javaeye.com/blog/126270#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 23 Sep 2007 11:31:57 +0800</pubDate>
        <link>http://strawman81.javaeye.com/blog/126270</link>
        <guid>http://strawman81.javaeye.com/blog/126270</guid>
      </item>
      </channel>
</rss>