限于篇幅的问题我们在这里只实现两种常用的图表,其他类型图表读者可以触类旁通。我们先给出柱状图的实现碰尺,饼图的实现再来跟柱状图进行比较。
1 柱状图
package lius.chart.demo
import java.io.*
import org.jfree.data.*
import org.jfree.chart.*
import org.jfree.chart.plot.*
/**
* 该类用于演示最简单的柱状图生成
* @author Winter Lau
*/
public class BarChartDemo {
public static void main(String[] args) throws IOException{
CategoryDataset dataset = getDataSet2()
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标蔽枯题
"水果", /宏吵洞/ 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是 false)
false, // 是否生成工具
false // 是否生成 URL 链接
)
FileOutputStream fos_jpg = null
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg")
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null)
} finally {
try {
fos_jpg.close()
} catch (Exception e) {}
}
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset()
dataset.addValue(100, null, "苹果")
dataset.addValue(200, null, "梨子")
dataset.addValue(300, null, "葡萄")
dataset.addValue(400, null, "香蕉")
dataset.addValue(500, null, "荔枝")
return dataset
}
/**
* 获取一个演示用的组合数据集对象
* @return
*/
private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset()
dataset.addValue(100, "北京", "苹果")
dataset.addValue(100, "上海", "苹果")
dataset.addValue(100, "广州", "苹果")
dataset.addValue(200, "北京", "梨子")
dataset.addValue(200, "上海", "梨子")
dataset.addValue(200, "广州", "梨子")
dataset.addValue(300, "北京", "葡萄")
dataset.addValue(300, "上海", "葡萄")
dataset.addValue(300, "广州", "葡萄")
dataset.addValue(400, "北京", "香蕉")
dataset.addValue(400, "上海", "香蕉")
dataset.addValue(400, "广州", "香蕉")
dataset.addValue(500, "北京", "荔枝")
dataset.addValue(500, "上海", "荔枝")
dataset.addValue(500, "广州", "荔枝")
return dataset
}
}
2 饼图
package lius.chart.demo
import java.io.*
import org.jfree.data.*
import org.jfree.chart.*
/**
* 用于演示饼图的生成
* @author Winter Lau
*/
public class PieChartDemo {
public static void main(String[] args) throws IOException{
DefaultPieDataset data = getDataSet()
JFreeChart chart = ChartFactory.createPie3DChart("水果产量图", // 图表标题
data,
true, // 是否显示图例
false,
false
)
// 写图表对象到文件,参照柱状图生成源码
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset()
dataset.setValue("苹果",100)
dataset.setValue("梨子",200)
dataset.setValue("葡萄",300)
dataset.setValue("香蕉",400)
dataset.setValue("荔枝",500)
return dataset
}
}
3将生成的图表移到浏览器上
package lius.chart.demo
import java.io.IOException
import javax.servlet.*
import javax.servlet.http.HttpServlet
import org.jfree.data.*
import org.jfree.chart.*
/**
* 演示通过 servlet 直接输出图表
* @author Winter Lau
*/
public class ChartDemoServlet extends HttpServlet {
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException
{
res.setContentType("image/jpeg")
DefaultPieDataset data = getDataSet()
JFreeChart chart = ChartFactory.createPie3DChart("水果产量图",
data,
true,
false,
false
)
ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
100,chart,400,300,null)
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset()
dataset.setValue("苹果",100)
dataset.setValue("梨子",200)
dataset.setValue("葡萄",300)
dataset.setValue("香蕉",400)
dataset.setValue("荔枝",500)
return dataset
}
}
4高级主题
很多情况我们不仅仅要求可以在浏览器上显示一个图表,我们更需要客户可以直接在图表上做一下交互的 *** 作,例如获取信息提示,点击图表某个部分进行更详细信息的展示等等。例如前面生成的简单柱状图,用户需要在看到柱状图后点击某种水果例如是苹果即可看到各个地区苹果产量的情况。为此就要求该图形具有交互 *** 作的功能。在 HTML 中为了让一个图像具有可交互的功能就必须给该图像定义一个 Map 对象。下表节选一段具有该功能的 HTML 代码:
<MAP NAME="chartMap">
<AREA SHAPE="RECT" COORDS="81,15,126,254" href="?series=0&category=100"
title="100 = 7,048"
onclick="javascript:clickChart('100')return false">
<AREA SHAPE="RECT" COORDS="143,27,188,255" href="?series=0&category=200"
title="200 = 6,721"
onclick="javascript: clickChart ('200')return false">
<AREA SHAPE="RECT" COORDS="205,54,250,255" href="?series=0&category=300"
title="300 = 5,929"
onclick="javascript: clickChart ('300')return false">
<AREA SHAPE="RECT" COORDS="267,85,312,255" href="?series=0&category=400"
title="400 = 5,005"
onclick="javascript: clickChart ('400')return false">
<AREA SHAPE="RECT" COORDS="329,17,374,255" href="?series=0&category=Diet"
title="Diet = 7,017" onclick="javascript:
clickChart ('Diet')return false">
</MAP>
由此就产生了一个问题:如果根据一个图像来生成对应的 MAP 对象。我们回头看看刚才的代码,在创建一个图表对象时候有两个参数,我们举柱状图的例子来讲这两个参数就是 ChartFactory. createBarChart3D 方法中的最后两个参数,这两个参数的类型都是布尔值。这两个参数意思分别是:是否创建工具提示 (tooltip) 以及是否生成 URL。这两个参数分别对应着 MAP 中一个 AREA 的 title 属性以及 href 属性。
可是我想知道的是怎么来产生这个 MAP 啊!哈哈,不要着急,JFreeChart 已经帮我们做好生成 MAP 对象的功能。为了生成 MAP 对象就要引入另外一个对象:ChartRenderingInfo。因为 JFreeChart 没有直接的方法利用一个图表对象直接生成 MAP 数据,它需要一个中间对象来过渡,这个对象就是 ChartRenderingInfo。
报表服务器支持多种类型的应用,能够以各种方式进行系统集成:
1.JAVA程序的无缝集成
2.非java程序的调用
3.C/S架构的应用 1.类Excel的设计模式,且兼容Excel文件输入
2.多数据源轻松关联
3.可拖拽的数据集
4.数据双向扩展,行列对称
5.报表分片
6.多样的数据处理方式
7.自由格间运算
8.多种参数设计手段
9.丰富的图表设计手段
1.浏览器端纯HTML展现
2.不失真的导出为EXCEL,WORD,PDF,TXT,CSV,SVG文件
3.各种分页控制
4.动态条件隐藏数据
5.报表分栏
6.重复表头
7.底图描绘,绝对定位方式的精确套打
8.末页补足空行
9.内置动态参数页面
10.各种统计图展现方式 1.完善的报表权限管理,保证不同角色用户查询数据的安全性
2.设置报表定时任务,可按照每天/每周/每月/每季度/每年绝缓,以及用户自定义的频率生成报表。并对生成的文件入库,进行检索管理
3.灵活的多种推送方式,将定时生成的报表以TEXT 、HTML 、EXCEL、PDF、 Word,CSV,SVG等漏岩多种形式存入本地系统或推送至服务器,或指定的其它地址
4.用户还可以在FineReport提供的可扩展功能基础上,自定开发定义报表管理,以及其它符返宏御合本企业业务要求的权限机制 1.多样的编辑风格
2.B/S浏览器中自动计算
3.数据一致性校验仪表盘
4.数据的扩展
5.数据直接回填
6.多级汇总填报 1.纯java环境支持
2.丰富开放的API接口
润乾报表是一个纯JAVA的蠢枝激企业级报表工具,是J2EE环境下开发WEB报表应用的最好工具。润乾报表作为纯JAVA报表工具,在J2EE的Web报表应用中其集成性和部署能力都明显优于BO/Crystal Report, Brio等非Java产品;在JAVA报表展现方面它不仅能实现其他报表产品所能实现的常规的报表展现,更能实现其他工具不能实现的EXCEL精确导出等功能;在JAVA报表设计方面,更是以其创新的新一代报表模型将报表设计效率大幅度提高,相比其他产品具有巨大优势。
集成与部署:
润乾报表采用纯JAVA开发,非常适合在J2EE下集成,其运行环境非常简单,只要有JDK即可工作,可与应用非常紧密的集成,轻易部署在各种 *** 作系统如Windows, Linux, Unix下。
润乾报表3.0的服务器是个逻辑概念,并没有一个物理的服务器在运行。它是作为应用服务器上的一个应用提交的,或者直接向应用程序员提交JAR包。应用程序员可以简单地通过Taglib标记进行报表的发布,也可以使用完整的JAVA API获得更深入的控制力度。
许多其他JAVA报表产品如CRYSTAL REPORT/BO,Cognos等都需采用独立的报表服务器,而作为100%的JAVA报表工具,润乾报表提供了更搭悉高的运行效率,为程序员提供了更大的灵活性与可控制,实现了与应用程序的无缝衔接,并且可以充分利用应用服务器的各种能力,如平衡负载、统一部署等。
Java报表展现:
润乾报表不需安装控件,可以实现纯带袜HTML报表方式,可以支持PDF,EXCEL输出,提供了全部的页面与打印控制,能很多地满足Web报表的展现需要。同时,润乾报表对图表有良好的支持,可以生成柱图、饼图、折线图等十几种图表。
Java报表设计:
润乾报表的核心特点在于开创性地提出了新一代报表模型,采用了革命性的多源分片、不规则分组、动态格间运算、行列对称等技术,使得复杂JAVA报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,JAVA报表设计的效率提高了一个数量级,远远超越了其他各种JAVA报表工具。
填报:
除此之外,润乾报表还提供了强有力的填报功能,不仅提供了灵活的表单设计和自动填写控制功能,而且支持离线填报、批量导入、汇总填报等多种方式,可以以先进的动态库表关联技术实现复杂的复合表单填报并保证数据的一致性,其填报能力远远超出同类产品。
润乾报表作为纯JAVA的报表工具,在J2EE的Web报表应用中其集成性和部署能力都明显优于BO/Crystal Report, Brio等非Java产品;在报表展现方面它不仅能实现其他报表产品所能实现的常规的报表展现,更能实现其他工具不能实现的EXCEL精确导出等功能;在报表设计方面,更是以其创新的新一代报表模型将报表设计效率大幅度提高,相比其他产品具有巨大优势。
可以说,润乾报表在Web报表工具的各个关键方面均全面达到先进水平,而在报表设计方面更是出类拔萃,无疑是最好的Java报表工具,是J2EE环境下开发WEB报表应用的最优选择,真正的做到商业智能,随需而动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)