Struts2整合JFreeChart图表说明

2024-02-05 14:18

本文主要是介绍Struts2整合JFreeChart图表说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


生成3D饼图
public class PieChartDemo
{
public static void main(String[] args) throws IOException
{
DefaultPieDataset data = getDataSet();
//JFreeChart chart = ChartFactory.createPieChart(
//生成3D饼图
JFreeChart chart = ChartFactory.createPieChart3D(
"图书销量统计图", // 图表标题
getDataSet(), //数据
true, // 是否显示图例
false, //是否显示工具提示
false //是否生成URL
);
//重新设置图标标题,改变字体
chart.setTitle(new TextTitle("图书销量统计图", new Font("黑体", Font.ITALIC , 22)));
//取得统计图标的第一个图例
LegendTitle legend = chart.getLegend(0);
//修改图例的字体
legend.setItemFont(new Font("宋体", Font.BOLD, 14));
//获得饼图的Plot对象
PiePlot plot = (PiePlot)chart.getPlot();
//设置饼图各部分的标签字体
plot.setLabelFont(new Font("隶书", Font.BOLD, 18));
//设定背景透明度(0-1.0之间)
plot.setBackgroundAlpha(0.9f);
//设定前景透明度(0-1.0之间)
plot.setForegroundAlpha(0.50f);
FileOutputStream fos = new FileOutputStream("book.jpg");
ChartUtilities.writeChartAsJPEG(
fos, //输出到哪个输出流
1, //JPEG图片的质量,0~1之间
chart, //统计图标对象
800, //宽
600,//宽
null //ChartRenderingInfo 信息
);
fos.close();
}
private static DefaultPieDataset getDataSet()
{
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("J2ME嵌入式开发",47000);
dataset.setValue("J2EE web应用开发",38000);
dataset.setValue("基于J2EE的Ajax开发",31000);
dataset.setValue("JavaScript权威指南",29000);
dataset.setValue("J2SE应用开发",25000);
return dataset;
}
}

LineChartDemo
public class LineChartDemo
{
public static void main(String[] args) throws IOException
{
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"水果销量统计图", // 图表标题
"水果", // 目录轴的显示标签
"销量", // 数值轴的显示标签
getDataSet(), // 数据集
//PlotOrientation.HORIZONTAL , // 图表方向:水平
//PlotOrientation.VERTICAL , // 图表方向:垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
//重新设置图标标题,改变字体
chart.setTitle(new TextTitle("水果销量统计图", new Font("黑体", Font.ITALIC , 22)));
//取得统计图标的第一个图例
LegendTitle legend = chart.getLegend(0);
//修改图例的字体
legend.setItemFont(new Font("宋体", Font.BOLD, 14));
XYPlot plot = (XYPlot)chart.getPlot();
//取得横轴
ValueAxis categoryAxis = plot.getDomainAxis();
//设置横轴显示标签的字体
categoryAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 18));
//取得纵轴
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
//设置纵轴显示标签的字体
numberAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
FileOutputStream fos = null;
fos = new FileOutputStream("fruitLine.jpg");
//将统计图标输出成JPG文件
ChartUtilities.writeChartAsJPEG(
fos, //输出到哪个输出流
1, //JPEG图片的质量,0~1之间
chart, //统计图标对象
800, //宽
600,//宽
null //ChartRenderingInfo 信息
);
fos.close();
}
//返回一个CategoryDataset实例
private static XYDataset getDataSet()
{
TimeSeries apple =new TimeSeries("苹果",Month.class);
apple.add(new Month(10,2007),3900);
apple.add(new Month(11,2007),900);
apple.add(new Month(12,2007),2500);
apple.add(new Month(1,2008),3900);
apple.add(new Month(2,2008),2000);
apple.add(new Month(3,2008),3300);
TimeSeries orange=new TimeSeries("桔子",Month.class);
orange.add(new Month(10,2007),3300);
orange.add(new Month(11,2007),2680);
orange.add(new Month(12,2007),2000);
orange.add(new Month(1,2008),1900);
orange.add(new Month(2,2008),2000);
orange.add(new Month(3,2008),2300);
TimeSeriesCollection dataset=new TimeSeriesCollection();
dataset.addSeries(apple);
dataset.addSeries(orange);
return dataset;
}
}


配置struts2,web.xml
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

struts.xml
<package name="jCuckoo" namespace="" extends="jfreechart-default">//此处需要注意
<action name="bookChart" class="jCuckoo.ChartAction">
<result type="chart">
<param name="width">600</param>
<param name="height">450</param>
</result>
</action>
<action name="barChart3Dt" class="jCuckoo.BarChart3DAction">
<result type="chart">
<param name="width">600</param>
<param name="height">450</param>
</result>
</action>
</package>

同时修改struts2-jfreechart-plugin-2.0.14.jar中的struts2-jfreechart-plugin-2.0.14.jar
<package name="jfreechart-default" extends="struts-default">//此处注意
<result-types>
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
<param name="height">150</param>
<param name="width">200</param>
</result-type>
</result-types>
</package>

ChartAction
public class ChartAction extends ActionSupport {
private JFreeChart chart;
public JFreeChart getChart()
{
chart = ChartFactory.createPieChart3D(
"图书销量统计图", // 图表标题
getDataSet(), //数据
true, // 是否显示图例
false, //是否显示工具提示
false //是否生成URL
);
//重新设置图标标题,改变字体
chart.setTitle(new TextTitle("图书销量统计图", new Font("黑体", Font.ITALIC , 22)));
//取得统计图标的第一个图例
LegendTitle legend = chart.getLegend(0);
//修改图例的字体
legend.setItemFont(new Font("宋体", Font.BOLD, 14));
//获得饼图的Plot对象
PiePlot plot = (PiePlot)chart.getPlot();
//设置饼图各部分的标签字体
plot.setLabelFont(new Font("隶书", Font.BOLD, 18));
//设定背景透明度(0-1.0之间)
plot.setBackgroundAlpha(0.9f);
//设定前景透明度(0-1.0之间)
plot.setForegroundAlpha(0.50f);
return chart;
}
private DefaultPieDataset getDataSet()
{
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("J2ME嵌入式开发",47000);
dataset.setValue("J2EE web应用开发",38000);
dataset.setValue("基于J2EE的Ajax开发",31000);
dataset.setValue("JavaScript权威指南",29000);
dataset.setValue("J2SE应用开发",25000);
return dataset;
}
}


BarChart3DAction
public class BarChart3DAction extends ActionSupport
{
private JFreeChart chart;
public JFreeChart getChart(){
chart = ChartFactory.createBarChart3D(
"图书销量统计图", // 图表标题
"图书", // 目录轴的显示标签
"销量", // 数值轴的显示标签
getDataSet(), // 数据集
//PlotOrientation.HORIZONTAL , // 图表方向:水平
PlotOrientation.VERTICAL , // 图表方向:垂直
false, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
//重新设置图标标题,改变字体
chart.setTitle(new TextTitle("图书销量统计图", new Font("黑体", Font.ITALIC , 22)));
CategoryPlot plot = (CategoryPlot)chart.getPlot();
//取得横轴
CategoryAxis categoryAxis = plot.getDomainAxis();
//设置横轴显示标签的字体
categoryAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
//分类标签以45度角倾斜
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 18));
//取得纵轴
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
//设置纵轴显示标签的字体
numberAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
return chart;
}
//返回一个CategoryDataset实例
private CategoryDataset getDataSet()
{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(47000 , "" , "J2ME嵌入式开发");
dataset.addValue(38000 , "" , "J2EE web应用开发");
dataset.addValue(31000 , "" , "基于J2EE的Ajax开发");
dataset.addValue(29000 , "" , "JavaScript权威指南");
dataset.addValue(25000 , "" , "J2SE应用开发");
return dataset;
}


index.jsp
<body>
<img src="bookChart.action"/>
<img src="barChart3Dt.action"/>
</body>

这篇关于Struts2整合JFreeChart图表说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681177

相关文章

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL