`

解读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上。

分享到:
评论

相关推荐

    jfreechart源码

    这个"jfreechart源码"压缩包包含的是JFreeChart项目的原始代码,对于想要深入理解其工作原理、进行二次开发或者优化图表功能的开发者来说,这是一个宝贵的学习资源。 JFreeChart源码的主要组成部分包括以下几个方面...

    JAVA图表工具 jfreechart 源码加完整例子

    **JAVA图表工具 jfreechart 源码及完整例子详解** `JFreeChart`是一款强大的开源Java库,用于创建各种类型的图表,如柱状图、饼图、线图、散点图、甘特图等。它广泛应用于数据分析、报告生成以及GUI应用中,提供了...

    JFreeChart范例源码集

    在"JFreeChart范例源码集"中,你将找到一系列示例代码,这些代码详细展示了如何利用JFreeChart库来构建各种类型的图表,对于理解和掌握JFreeChart的使用非常有帮助。 1. **基本概念与用法** JFreeChart提供了一个...

    JFreechart源码以及linux环境下中文乱码的解决

    **JFreeChart源码分析** JFreeChart是一个强大的Java库,用于生成各种图表,包括饼图、柱状图、线图、散点图等。它广泛应用于数据分析、报告生成和Web应用中。JFreeChart的核心功能是将数据结构转换为可视化图形,...

    Java JFreeChart组件包源码.rar

    3. **数据驱动**:JFreeChart接受各种数据结构,如数组、列表或数据库查询结果,可以轻松地将数据转换为可视化图表。 4. **图像输出**:生成的图表不仅可以以图形形式在GUI中显示,还可以导出为PNG、JPEG、SVG、PDF...

    Java图表类库JFreeChart源码

    在开发过程中,JFreeChart源码中的事件处理和动画机制也值得一提。它可以响应用户交互,例如点击图表元素、缩放或平移视图等,这对于构建交互式应用非常有用。同时,通过Animation接口,开发者可以实现动态数据更新...

    jfreechart demo 源码

    **JFreeChart 源码解析** JFreeChart 是一个流行的 Java 图表库,它提供了丰富的图表类型,如柱状图、饼图、线图、散点图等,广泛用于数据可视化。`jfreechart1.0.12` 版本的 Demo 源码是了解 JFreeChart 库如何...

    JFreeChartDemo案例的源码

    通过查看源码,你可以学习到如何将 JFreeChart 整合进Web应用,以及如何利用它创建出具有交互性的图表。 总结,JFreeChart 是一个强大且灵活的 Java 图表库,它能够帮助开发者轻松地在Servlet中创建各种图表,并且...

    jfreechart-1.0.19demo源码

    2. **类结构和API理解**:通过阅读源码,我们可以深入了解JFreeChart的内部实现,学习如何利用其提供的API创建和管理图表。 3. **最佳实践**:源码中的例子通常包含了最佳实践和常见问题的解决方案,有助于提高开发...

    JFreeChart 例子 源码 demo

    JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图...

    jfreechart 1.0.6 demo 源码

    2. **数据模型**:数据模型是图表的核心,JFreeChart提供了多种数据结构,如CategoryDataset、ValueDataset和PieDataset,它们用于存储和组织图表数据。开发者可以根据需要选择合适的数据模型。 3. **图表组件**:...

    jfreechart-1.0.9源码及例子

    JFreeChart的源码结构清晰,主要分为几个核心模块: - ChartFactory:提供创建各种图表的工厂方法。 - ChartComponent:表示图表组件,如Legend(图例)、Title(标题)等。 - Dataset:数据集接口,用于存储图表...

    Jfreechart demo 源码

    9. **数据处理(Data Handling)**: JFreeChart 支持多种数据结构,包括 DefaultCategoryDataset、TimeSeriesCollection 等,源码会讲解如何填充和操作这些数据集。 10. **图表输出(Chart Export)**: 可以将图表...

    JFreechart Demo源码集

    **JFreeChart 源码集详解** JFreeChart 是一个功能丰富的 Java 图形库,专为开发人员设计,用于生成高质量的图表。这个库在Java应用中广泛使用,尤其在数据分析、报表制作以及Web应用中,如 JSP(JavaServer Pages...

    jfreechart 1.0.19 源码加文档和依赖包

    总的来说,JFreeChart 1.0.19版是一个强大且灵活的Java图表库,通过它的源码和文档,开发者可以深入学习图表绘制技术,创建出满足特定需求的高质量图表。而依赖包的选择则表明了它在Web应用和测试中的适应性。通过...

Global site tag (gtag.js) - Google Analytics