JfreeChart(1)——初探

来源:互联网 发布:淘宝助理怎么弄 编辑:程序博客网 时间:2024/06/13 03:54

       JFreeChart的主要功能就是创建各种各样的图表!可以很方便的表现一些数据!使用JFreeChart的整体步骤一般就三个而已,第一步是准备要用来显示的数据,第二步是创建一个JFreeChart对象,JFreeChart对象通过前面的数据(dataset)来生成一个图表,第三步是显示生成的图表;

下面是一个入门示例,生成pieChart;

 

第一步:取得数据

JFreeChart可以通过任何实现了PieDataset接口的类取得数据来生成一个JFreeChart对象,而DefaultPieDataset则是实现了这个接口的,下面我们就可以利用这个接口来生成数据了!

Java代码
 收藏代码
  1. DefaultPieDataset defaultPieDataset = new DefaultPieDataset();  
  2. defaultPieDataset.setValue("中文 1"43.2);  
  3. defaultPieDataset.setValue("Category 2"27.8);  
  4. defaultPieDataset.setValue("Category 3"79.5);  

 

第二步:利用前面的数据来生成JFreeChart对象;

JfreeChart里面提供了一个ChartFactory对象,可以方便我们来创建各种各样的chart对象

Java代码
 收藏代码
  1. JFreeChart jfreeChart = ChartFactory.createPieChart("中文标题",//标题  
  2. defaultPieDataset,//上面生成的数据,即传入要用于显示的数据  
  3. true,//是否显示图例  
  4. true,//是否生成工具提示  
  5. true);//是否生成URL  

 

第三步:显示生成的图表

显示生成的图标可以有很多种方式,在WEB程序中可以直接以流的方式写到客户端,也可以把生成的图表以图片的形式保存在服务器上,然后客户端访问该图片,我这里举的是最简单的那种,即把图表直接显示在一个frame里面,关于这个JFreeChart的一个ChartFrame对象已经封装好了!

Java代码
 收藏代码
  1. ChartFrame chartframe = new ChartFrame("Test", jfreeChart);//First表示该Frame的标题,jfreechart表示要显示的JFreeChart对象  
  2. chartframe.pack();//自适应窗体  
  3. chartframe.setVisible(true);  

 至此一个简单显示图表的问题就解决了,

关于这个还有一个就是中文问题,就是在标题或者标签出现中文的时候会出现乱码,这个问题将在下面的完整代码里面进行解决

下面是一个完整的代码

  

Java代码
 收藏代码
  1. package com.tiantian.everything.chart;  
  2.   
  3. import java.awt.Font;  
  4.   
  5. import org.jfree.chart.ChartFactory;  
  6. import org.jfree.chart.ChartFrame;  
  7. import org.jfree.chart.JFreeChart;  
  8. import org.jfree.chart.plot.PiePlot;  
  9. import org.jfree.chart.title.TextTitle;  
  10. import org.jfree.data.general.DefaultPieDataset;  
  11.   
  12. public class Test {  
  13.   
  14.     @SuppressWarnings("unchecked")  
  15.     public static void main(String args[]) {  
  16.         DefaultPieDataset defaultPieDataset = new DefaultPieDataset();  
  17.         defaultPieDataset.setValue("中文 1"43.2);  
  18.         defaultPieDataset.setValue("中 2"27.8);  
  19.         defaultPieDataset.setValue("Category 3"79.5);  
  20.           
  21.         JFreeChart jfreeChart = ChartFactory.createPieChart("中文标题",// 标题  
  22.                 defaultPieDataset,// 上面生成的数据,即传入要用于显示的数据  
  23.                 true,// 是否显示图例  
  24.                 true,// 是否生成工具提示  
  25.                 true);// 是否生成URL  
  26.           
  27.         // 如果前面的标题是中文的话则在页面是显示的时候会出现乱码,我的解决方法是在生成了JFreeChart对象后,  
  28.         // 将JFreeChart对象的标题重新设置一次,并将它的字体设置为中文字体,这样就不乱码了  
  29.         jfreeChart.setTitle(new TextTitle(jfreeChart.getTitle().getText(),  
  30.                 new Font("宋体", Font.CENTER_BASELINE, 21)));  
  31.           
  32.         // 这个对象是JFreeChart对象包含的一个主体对象,每个JFreeChart对象都包含一个类似的对象,  
  33.         // 该对象有前面的数据的引用等  
  34.         PiePlot piePlot = (PiePlot) jfreeChart.getPlot();  
  35.           
  36.         // 如果没有这句的上面的标签出现中文的时候也是会乱码的,pieLot可以直接这样设置它的标签的字体,  
  37.         // 但是JFreeChart我就没有找到可以直接设置它的标题的字体的方法  
  38.         piePlot.setLabelFont(new Font("宋体", Font.CENTER_BASELINE, 16));  
  39.           
  40.         // 下面一段是对下方显示的图例的中文的解决  
  41.         jfreeChart.getLegend(0).setItemFont(  
  42.                 new Font("宋体", Font.CENTER_BASELINE, 15));  
  43.           
  44.         ChartFrame chartframe = new ChartFrame("Test", jfreeChart);// First表示该Frame的标题,jfreechart表示要显示的JFreeChart对象  
  45.         chartframe.pack();// 自适应窗体  
  46.         chartframe.setVisible(true);  
  47.     }  
  48.   
  49. }  

 

 还可以将生成的Chart输出到一个输出流里面:

Java代码
 收藏代码
  1. ChartUtilities.writeChartAsJPEG(fos,// 输出到哪个输出流     
  2.                 1// jpeg 图片的质量,0~1之间     
  3.                 chart, // 统计图表对象     
  4.                 800,// 长     
  5.                 600// 宽     
  6.                 );     

 

 

 
 
0 0
原创粉丝点击