http://localhost:8080/JFreeChart_Web/input.jsp
该地址就是我所设置的网页页面:
图4.10 运行界面
由于JSP网页是基于本地的页面服务器,而不需要外网,所以即便在没有网络的情况下,也能使用该JFreeChart系统。
输入任意一组数据后,可以清楚的看到这一数据结构的比例,优点是,他是在网页上的数据可视化,同时,也是动态的数据可视化:
图4.11 运行结果
4.4 设计过程中发生的问题及解决方法
虽然我大致了解了具体该怎么去配置我将要运行的环境,但是在实际操作中,还是碰到了一些小问题。比如在使用MYECLIPSE开发的过程中,会报一个莫名其妙的错误,错误可能是指向某个类文件的第一行。
遇到这样的问题,我一开始觉得是自己没有正确导入jfreechart-1.0.14.jar、gnujaxp.jar和jcommon-1.0.14.jar这三个包,但是后来才发现,当我重新调用这些文件时,我要新建一个lib目录,不然MYECLIPSE系统是不会重新去寻找原来的路径的。
4.4.1 显示过程中的报错问题
在包org.jfree.chart.demo中有几十个文件用于展示JFreeChart所能支持的所有图表的表示结果,但是最初,我在Oracle官网上下载的JDK是比较新的版本,所以运行时遇到了一些问题,让我不断报错,开始我以为是自己设计的代码出现了问题,现象如下:
图4.12 报错提示
后来我去参考了一些文献发现,这个错误是由于新版的Swing大量的使用了微软的DirectDraw的技术来提高画图的性能,而可能我的显卡在这个时候会跟我闹情绪或者我的显卡根本不支持这样的一个技术,这时我以为自己的电脑在硬件上不支持,后来我发现要解决这个问题非常简单,我就屏蔽掉了DirectDraw,不让Swing使用该技术就可以了。在运行这些代码时给虚拟机置顶参数-Dsun.java2d.noddraw即可。
不过,问题又出现了,我本来以为这是基于Web的图表啊,怎么又牵扯到了Swing上了?这是因为为了使得开发者容易上手,无需配置任何运行环境,所以这些例子都是基于GUI方式的用于展现给开发者如果生成一个图表,我所要学习的也就是如何利用这个引擎来生成图表而不是怎么来显示一个图表,当我把生成的图表对象Export到一个图像文件时,即可在Web上发布了。
4.4.2 运行实例时出现乱码
刚接触到JFreeChart这个图形报表工具包,写了一个JAVA应用程序,打算利用JFreeChart强大的图形生成功能生成一个简单的饼图,发现JAVA图形界面上却无法正常显示中文,中文显示的都是一个一个的小方框。
package org.test.jfreechart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class JFreeChartTest {
/**
* @param args
*/
public static void main(String[] args) {
DefaultPieDataset dpt = 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);
}
}
可是运行起来显示效果却出现了口口口样式的乱码:
图4.13 乱码的输出结果
除了标题的中文能正常显示以外,其它的都显示为口口口样式的方格。让我设计中感到奇怪的是为什么标题跟链接的中文都能正常显示,但为什么运行的时候就不能正常显示了呢? 基于jfreechart的动态数据可视化应用开发(12):http://www.751com.cn/jisuanji/lunwen_823.html