`

解读JFreeChart的源码结构

阅读更多

在开始使用JFreeChart之前我们有必要先大概了解一下JFreeChart本身的结构以及它所带一些例子程序,这样有助于我们下
一步自行开发。下载JFreeChart包后已经带有非常丰富的例子,因为JFreeChart这个项目本身的使用文档非常少,因此学习
它最好的办法就是学习它所带的例子源码。在包org.jfree.chart.demo中有几十个文件用于展示JFreeChart所能支持的所有图
表的结果。如果你的JDK是比较新的情况下可能在运行这些例子时会有问题,现象如下:

java.lang.UnsatisfiedLinkError: initDDraw
at sun.awt.windows.Win32OffScreenSurfaceData.initDDraw(Native Method)
at sun.awt.windows.Win32OffScreenSurfaceData.<clinit>(Win32OffScreenSurfaceData.java:141)
at sun.awt.Win32GraphicsDevice.<clinit>(Win32GraphicsDevice.java:58)
at sun.awt.Win32GraphicsEnvironment.makeScreenDevice(Win32GraphicsEnvironment.java:168)
at sun.java2d.SunGraphicsEnvironment.getScreenDevices(SunGraphicsEnvironment.java:240)
at sun.awt.Win32GraphicsEnvironment.getDefaultScreenDevice(Win32GraphicsEnvironment.java:61)
at java.awt.Window.init(Window.java:224)
at java.awt.Window.<init>(Window.java:268)
at java.awt.Frame.<init>(Frame.java:398)
at javax.swing.JFrame.<init>(JFrame.java:198)
at org.jfree.chart.demo.JFreeChartDemo.<init>(JFreeChartDemo.java:148)
at org.jfree.chart.demo.JFreeChartDemo.main(JFreeChartDemo.java:285)
Exception in thread "main"

 这个错误是由于新版的Swing大量的使用了微软的DirectDraw的技术来提高画图的性能,而可能你的显卡在这时候会跟你闹点
情绪或者显卡本身并不支持这样的一个技术。难道就没有办法了嘛?要解决这个问题也非常简单,我们可以屏蔽掉
DirectDraw,不让Swing使用该技术就可以了。在运行这些代码时给虚拟机指定参数-Dsun.java2d.noddraw 即可。
这时可能你又该纳闷了,不说是基于Web的图表嘛,怎么又扯到Swing上了?这是因为为了使开发者容易上手,无需配置任何
运行环境,所以这些例子都是基于GUI方式的用于展现给开发者如果生成一个图表,我们要学习的也就是如何利用这个引擎生
成图表而不是怎么来显示一个图表。当我们把生成的图表对象Export到一个图像文件即可在Web上发布。

下面我们来介绍JFreeChart中几个核心的对象类:

类名类的作用以及简单描述
JFreeChart 图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了
一个工厂类用于创建不同类型的图表对象
XXXXXDataset 数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类
XXXXXPlot 图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集
对象的支持
XXXXXAxis 用于处理图表的两个轴:纵轴和横轴
XXXXXRenderer 负责如何显示一个图表对象
XXXXXURLGenerator 用于生成Web图表中每个项目的鼠标点击链接
XXXXXToolTipGenerator 用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类
基本上我认为JFreeChart项目本身的类结构的设计并不是很好,首先在创建图表的时候用到了大量的工厂方法,这样做虽然
可以简化创建图表对象的代码,但是对项目本身或者开发人员来讲自行扩展一种新的图表都仍然是一件很麻烦的事情;其次
除图表对象本身外其余的类过于复杂,使用者必须去了解每个类型的图表对象应该对应哪些Axis、Plot、Renderer类,并且必
须非常熟悉这些类的构造函数中每个参数的具体含义。这些问题都大大困扰很多初学者。不过,虽然存在很多问题,但是
JFreeChart本身仍不失为一个非常优秀的图表引擎,况且项目本身也在逐渐的发展中。
在非常简略的介绍了JFreeChart本身的代码结构后,下面我们开始动手试验几个常用的图表并把他们放到web上。

分享到:
评论

相关推荐

    JFreeChat中文教程(入门篇

    二、解读JFreeChart源码结构 在开始开发前,了解JFreeChart的源码结构和提供的示例程序是很有帮助的。JFreeChart的源代码组织得相当清晰,尤其是`org.jfree.chart.demo`包中包含了大量的示例程序,每个示例展示了...

    用JFreeChart创建基于Web的图表

    #### 四、JFreeChart源码结构解读 在使用JFreeChart之前,了解其源码结构有助于更好地理解和使用该库。JFreeChart提供的示例源码位于`org.jfree.chart.demo`包下,其中包括了数十个文件,用于展示JFreeChart所能...

    使用JFreeChart来创建基于web的图表.docx

    #### 解读JFreeChart的源码结构 理解JFreeChart的内部结构有助于更高效地使用该库。JFreeChart提供了丰富的示例程序,位于`org.jfree.chart.demo`包中。这些示例展示了几乎所有支持的图表类型。 - **运行示例时...

    web页面报表分析之3D饼状图

    3. **数据绑定**:将业务数据与图表关联,这通常涉及到数据结构的设计,比如使用ArrayList、HashMap等数据结构存储数据,然后将这些数据转换成JFreeChart可以理解的格式。 4. **自定义样式**:为了使图表更具可读性...

    java-sar:一个简单Linux SAR文件(系统活动报告)分析器

    7. **项目结构**:通过"java-sar-master"可以推测项目的组织结构,通常包括src/main/java(源代码)、src/test/java(测试代码)、pom.xml(Maven项目配置文件)等。 8. **版本控制**:可能是使用Git进行版本管理,...

Global site tag (gtag.js) - Google Analytics