JFreeChart chart = ChartFactory.createVerticalBarChart3D
dataset,true,true,false);chart.setBackgroundPaint(new GradientPaint(0.0F, 0.0F, Color.white, 1000F, 0.0F, Color.red));
chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));Font font=new Font("黑体",Font.TRUETYPE_FONT, 12);
StandardLegend legend = (StandardLegend) chart.getLegend();
legend.setItemFont(font);CategoryPlot plot = (CategoryPlot)chart.getPlot();
plot.setForegroundAlpha(0.9F);
CategoryAxis domain_axis = plot.getDomainAxis();
domain_axis.setTickLabelFont(font);ValueAxis value_axis=plot.getRangeAxis();
value_axis.setTickLabelFont(font);

解决方案 »

  1.   

    这是我在win2000下面的生成统计图的类,但在linux下面汉字显示有问题的类,请各位支招:/*
     * Chart.java
     */
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.Map;import org.jfree.chart.ChartColor;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartRenderingInfo;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.entity.StandardEntityCollection;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.renderer.VerticalBarRenderer;
    import org.jfree.data.CategoryDataset;
    import org.jfree.data.DatasetUtilities;
    import org.jfree.data.DefaultKeyedValues;
    public class Chart {
    //图片文件的名字(用生成图片的日期和毫秒数值表示)
    private String chartname;
    //设置图片文件的部分名字(系统当时的毫秒数值)
    private String partname;
    /**
     * @param map 
     * @return 
     * @throws IOException
     */
    public String createChart(Map map) throws IOException {
    //将map中的数据导入DefaultKeyedValues
    DefaultKeyedValues kvs = new DefaultKeyedValues();
    Iterator iterator = map.keySet().iterator();
    while (iterator.hasNext()) {
    String key = (String) iterator.next();
    Double value = (Double) map.get(key);
    kvs.addValue(key, value);
    }
    //创建CategoryDataset
    CategoryDataset dataset = DatasetUtilities.createCategoryDataset("", kvs);
    //创建JFreeChart
    JFreeChart chart = ChartFactory.createVerticalBarChart3D("", // chart title
    "", // domain axis label
    "pageview", // range axis label
    dataset, // data
    false, // include legend
    true, true);
    //设置图片
    CategoryPlot plot = chart.getCategoryPlot();
    //显示数值在数据条柱上面
    plot.setValueLabelsVisible(true); VerticalBarRenderer vbr = (VerticalBarRenderer) plot.getRenderer();
    //设置数据条柱的颜色
    vbr.setSeriesPaint(0, ChartColor.LIGHT_BLUE);
    ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

    //格式化日期
    SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMdd");
    Date date = new Date();
    String chartname = DateFormat.format(date) + "-" + partname;
    File f=new File("."+ File.separator+ "webapps"+ File.separator + "weblog"+ File.separator+ "charts");
    if(!f.exists())
    new File("."+ File.separator+ "webapps"+ File.separator + "weblog"+ File.separator+ "charts").mkdirs();
    //File file1 = new File("."+File.separator+"charts"+File.separator+chartname + ".png");
    File file1 =
    new File(
    "."
    + File.separator
    + "webapps"
    + File.separator
    + "weblog"
    + File.separator
    + "charts"
    + File.separator
    + chartname
    + ".png");
    //生成图片
    ChartUtilities.saveChartAsPNG(file1, chart, 600, 400, info);
    String file = "." + File.separator + "charts" + File.separator + chartname + ".png";
    return file;
    } /**
     * @param string
     */
    public void setPartname(String string) {
    partname = string;
    }}
      

  2.   

    我也遇到了同样的问题。也没有解决。在win2000下是一点问题也没有的。到了linux就出问题了
      

  3.   

    我以前也遇到了这个问题.那次是和hp合作的一个项目.hp的项目经理几乎找遍了hp的牛人才解决的.很简单把win2000下的字符集拷贝到jdk下就好了.
      祝好运!
      

  4.   

    blue999star(星星要挣钱,养老婆) 
    请问把字符集拷贝到jdk下的哪个地方?是把他放到.jar文件里去吗?如果是的话,放到哪个包里呢?是不是要重新编译呢?我是个新手,请多指教,谢谢
      

  5.   

    您有JFreeChart的用户开发手册吗,能发给我一份吗,谢谢。
    [email protected]
    我很想学习.