菜单
  

    后来我发现ChartFrame是继承自javax.swing.JFrame的,也就是在JFrame上显示中文有问题。
    Class ChartFrame
    java.lang.Object java.awt.Component java.awt.Container java.awt.Window java.awt.Frame javax.swing.JFrame org.jfree.chart.ChartFrame
    后来我想到以前JAVA课程老师说到的改变font字体,于是我编译了如下的代码添加到ChartFactory.createPieChart之前:
    standardChartTheme standardChartTheme=new StandardChartTheme("CN");  //设置标题字体  
    standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD,20));  //设置图例的字体  
    standardChartTheme.setRegularFont(new Font("宋书",Font.PLAIN,15));   //设置轴向的字体  
    standardChartTheme.setLargeFont(new Font("宋书",Font.PLAIN,15));  //应用主题样式  
    chartFactory.setChartTheme(standardChartTheme);
    另一种极端的方法就是直接改jar包的源代码。比如源码中有setFont(new Font(xxx, Font.PLAIN, 18)); 把xxx改为宋体,我使用的JFreeChart的.jar包为1.0.14,太新的包对中文显示可能有问题,所以最好还是用更早的版本。
    于是综合所有办法,采用换包(使用1.0.10)与设置font的方法重新写了一个程序直接将图片生成到本地磁盘。
    package org.test.jfreechart;
    import java.awt.Font;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.PiePlot;
    import org.jfree.chart.title.LegendTitle;
    import org.jfree.data.general.DefaultPieDataset;
    public class JFreeChartTest3 {
    public static DefaultPieDataset getDataset(){
    DefaultPieDataset dataset = new DefaultPieDataset();
    dpd.setValue("管理人员", 25);  //输入数据
    dpd.setValue("市场人员", 25);
    dpd.setValue("开发人员", 45);
    dpd.setValue("其他人员", 10);
    JFreeChart jfree = ChartFactory.createPieChart("某公司人员组织数据图",dpt,true,true,false);
    ChartFrame cf = new ChartFrame("某公司人员组织数据图",jfree);
    cf.pack();
    cf.setVisible(true);
    }
    }
    public static void main(String []args){
    JFreeChart chart = ChartFactory.createPieChart("某公司人员组织结构图",getDataset(),true,true,true);
    Font font = new Font("SimSun",10,20);
    chart.getTitle().setFont(font);
    LegendTitle legend = chart.getLegend(0);
    legend.setItemFont(font);
    PiePlot plot = (PiePlot)chart.getPlot();
    plot.setLabelFont(font);  
    try {
    OutputStream out = new FileOutputStream("com.jpeg");
    try {
    ChartUtilities.writeChartAsJPEG(out,chart,500,400);out.close();
    } catch (IOException e) {e.printStackTrace();}
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }}}
    经过修改后,终于解决了乱码,图片显示如下:
     
    图4.14 正确的输出结果
    终于,中文显示正常,问题解决。同样将JFreeChart应用到JSP页面中,也能正常显示,无任何问题。
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="org.jfree.data.general.DefaultPieDataset" %>
    <%@ page import="org.jfree.chart.JFreeChart" %>
    <%@ page import="org.jfree.chart.ChartFactory" %>
    <%@ page import="org.jfree.chart.servlet.ServletUtilities" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
        
  1. 上一篇:《Premiere视频制作》教学网站设计与实现
  2. 下一篇:C#条码仓库管理系统的设计与开发—统计、报表模块
  1. 基于MATLAB的图像增强算法设计

  2. jsp+sqlserver高校二手商品交...

  3. 基于Kinect的手势跟踪与识别算法设计

  4. JAVA基于安卓平台的医疗护工管理系统设计

  5. java+mysql设备监控记录的大...

  6. 基于核独立元分析的非线...

  7. 基于Hadoop的制造过程大数据存储平台构建

  8. 十二层带中心支撑钢结构...

  9. 杂拟谷盗体内共生菌沃尔...

  10. 河岸冲刷和泥沙淤积的监测国内外研究现状

  11. 大众媒体对公共政策制定的影响

  12. 酸性水汽提装置总汽提塔设计+CAD图纸

  13. 当代大学生慈善意识研究+文献综述

  14. 中考体育项目与体育教学合理结合的研究

  15. 电站锅炉暖风器设计任务书

  16. java+mysql车辆管理系统的设计+源代码

  17. 乳业同业并购式全产业链...

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回