步入工作已经有半年多了,发现自己的知识还是很匮乏,所以利用闲余时间学习一点东西,提高一下自己。最近在学习JFreeChart,写一点学习的心得,和大家分享一下。我写bolg是一方面和大家一块分享,另外一方面就是对于只是一点回顾,以后想用的时候,可以随时温习一下。这是我第一次写blog,肯定不会写的很专业,望大家多多包涵。
JFreeChart是一个100%免费的java图标库,它可以使开发者在他们的应用中轻松的制作专业的高品质图标图标。JFreeChart的扩展特征集合包括:
- 一个一致的并且良好文档API,支持广泛的图表类型。
- 设计灵活,易于扩展,并且使用目标包括服务器端和客户端的应用。
- 支持多种输出类型,包括Swing组建,图像文件(包括PNG和JPEG),并且支持矢量图形文件格式。
- JFreeChart是开源的,更加的专业,免费软件。它被分布,根据条款GNU较宽松通用许可证,允许在专有应用程序中使用。
以上是JFreeChart的官方网站对于JFreeChart的解说,我只是翻译了一下了,现在开始做用JFreeChart制作一个饼状图。
在此之前需要下载JFreeChart的jar包,去JFreeChart的官方网站下载,下载地址: http://sourceforge.net/projects/jfreechart/files/,可能由于网站布局的变动,会稍微调下载位置。这里有三个可以下载的包分别是JFreeChart,JCommen,Decoument,现在最新版,我现在的是
,jfreechart-1.0.13.zip,
jcommon-1.0.16.zip,
jfreechart-1.0.13-javadocs.zip。第一个包是JFreeChart最总要的部分里面有所有的jar包,第二个包是因为JFreeChart利用到了Jcommon组件的东西。第三个包里面是API的文档。对他们解压缩。
第一,
jfreechart-1.0.1的文件夹的lib目录下取出最重要的两个jar包jcommon-1.0.16.jar和jfreechart-1.0.13.jar。把他们放到class-path路径下,对应在MyEclipse路径为 WebRoot-----WEB-INF----lib下,这样MyEclipse会自动加载jar包。
第二,在
MyEclipse的
src目录建立com.test.jfreechart的包,在该包下建立JFreeChartTest.java测试类,然后运行就可以第一次出现饼状图。代码如下:
package com.test.jfreechart;
import java.awt.Font;
import java.awt.peer.FontPeer;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
public class JFreeChartTest {
public static void main(String[] args)
{
DefaultPieDataset dpd = new DefaultPieDataset();
dpd.setValue("大前锋", 213);
dpd.setValue("小前锋", 206);
dpd.setValue("中锋", 226);
dpd.setValue("控球后卫", 190);
dpd.setValue("得分后卫", 198);
JFreeChart chart = ChartFactory.createPieChart3D("自娱自乐篮球队", dpd, true, true, true);
ChartFrame chartframe = new ChartFrame("BS篮球队是SB",chart);
//解决乱码问题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体",Font.PLAIN,15)); //标题文字乱码。("自娱自乐篮球")
PiePlot plot = (PiePlot)chart.getPlot();//饼上的文字乱码("大前锋,小前锋.....")。
plot.setLabelFont(new Font("宋体",Font.PLAIN,15));
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN,15));//图例(legend)文字乱码
//乱码解决结束。
chartframe.pack();
chartframe.setVisible(true);
}
}
弱弱的解释一下,不知道为什么在我的电脑里输入中文标签会有乱码,但是在我同事电脑里就没有乱码。所以我在代码中加入了解决乱码的方法,解决乱码的中间的部分。分别对
标题文字乱码,
饼上的文字乱码,
图例(legend)文字乱码的乱码进行字体设置。
关于乱码更加全面的方法,大家可以参考一下这个网址:http://apps.hi.baidu.com/share/detail/23094625。
就写到这里吧,很简单是吧,我刚刚开始学习目前只能到这个程度了,以后会持续分享。