ZK 使用jfreeChart
前台:
<?page title="Grid使用" contentType="text/html;charset=UTF-8"?>
<zk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.zkoss.org/2005/zul"
xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul"> <window border="none" apply="test.GrdiCtrl">
<grid >
<columns sizable="true" >
<column label="图表" align="center" />
</columns>
<rows id="rows"> </rows>
</grid> </window>
</zk>
后台:
package test; import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;
import java.util.Random; import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericAutowireComposer;
import org.zkoss.zul.CategoryModel;
import org.zkoss.zul.Cell;
import org.zkoss.zul.Chart;
import org.zkoss.zul.PieModel;
import org.zkoss.zul.Row;
import org.zkoss.zul.Rows;
import org.zkoss.zul.SimpleCategoryModel;
import org.zkoss.zul.SimplePieModel; import chart.LineChartEngine;
import chart.TestEngine; public class GrdiCtrl extends GenericAutowireComposer<Component>{ private static final long serialVersionUID = 1L; // colors
public static Color COLOR_1 = new Color(0x38EB38);
public static Color COLOR_2 = new Color(0xFE9900);
public static Color COLOR_3 = new Color(0xEF6AD5);
public static Color COLOR_4 = new Color(0xFFFF00);
public static Color COLOR_5 = new Color(0x66CBFF);
public static Color COLOR_6 = new Color(0x9FFE80); private static Paint[] colors1 = new Paint[]{COLOR_2, COLOR_1}; private Rows rows; @Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp); rows.appendChild(addRow());
} private Row addRow() {
int count = 1;
Row row = new Row(); //饼状图
Chart mychart1 = new Chart(); PieModel model = new SimplePieModel();
model.setValue("已使用", new Double(2.0));
model.setValue("未使用", new Double(3.0)); TestEngine engine1 = new TestEngine();
engine1.setColors(colors1);
mychart1.setModel(model);
mychart1.setEngine(engine1); mychart1.setId("chart" + (3*count+1)); mychart1.setWidth("250px");
mychart1.setHeight("125px"); Cell cell2 = new Cell();
cell2.appendChild(mychart1); //折线图
CategoryModel model1 = new SimpleCategoryModel();
Chart linechart1 = new Chart();
linechart1.setType("line");
linechart1.setHeight("250px");
linechart1.setWidth("500px");
linechart1.setThreeD(false);
linechart1.setFgAlpha(128); model1.setValue("CPU使用率", "Category 1", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率", "Category 2", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率", "Category 3", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率", "Category 4", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率", "Category 5", 10 * new Random().nextInt(7)); model1.setValue("CPU使用率2", "Category 1", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率2", "Category 2", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率2", "Category 3", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率2", "Category 4", 10 * new Random().nextInt(7));
model1.setValue("CPU使用率2", "Category 5", 10 * new Random().nextInt(7)); linechart1.setModel(model1);
LineChartEngine lce = new LineChartEngine(2,5);
lce.setMaxRange(100);
linechart1.setEngine(lce);
Font titlefont = new Font("黑体", Font.PLAIN, 12); linechart1.setTitle("CPU(%)");//设置top标题 Font subfont = new Font("黑体", Font.PLAIN, 12);
linechart1.setYAxisFont(subfont);//设置字体,防中文乱码
linechart1.setYAxis("数值");//设置left标题 Cell cell3 = new Cell();
cell3.appendChild(linechart1);
//
linechart1.setXAxis("08 09 10 11 12");
//Font f = new Font("Serif",Font.PLAIN,11);
//linechart1.setXAxisFont(f);
linechart1.setTitleFont(titlefont); row.appendChild(cell2);
row.appendChild(cell3); row.setStyle("background:#ffffff");
return row;
} }
饼图引擎:
package com.zk.ctrl.chart; import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;
import java.awt.Shape;
import java.awt.Stroke; import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.DefaultDrawingSupplier;
import org.jfree.chart.plot.PiePlot;
import org.zkoss.zkex.zul.impl.JFreeChartEngine;
import org.zkoss.zul.Chart; public class TestEngine extends JFreeChartEngine { private static final long serialVersionUID = 1L; Paint[] colors; public Paint[] getColors() {
return colors;
} public void setColors(Paint[] colors) {
this.colors = colors;
} public boolean prepareJFreeChart(JFreeChart jfchart, Chart chart) {
jfchart.setBorderPaint(Color.white);
jfchart.setBorderVisible(true);
Stroke s = new BasicStroke(10.0f);
jfchart.setBorderStroke(s); PiePlot piePlot = (PiePlot) jfchart.getPlot();
// 璁剧疆鑳屾櫙閫忔槑搴?
piePlot.setBackgroundAlpha(1.0f); piePlot.setBaseSectionOutlinePaint(new Color(0xEEEEEE));
piePlot.setSectionOutlinesVisible(false);
piePlot.setLabelBackgroundPaint(Color.WHITE);
piePlot.setLabelOutlinePaint(null);
piePlot.setLabelShadowPaint(null);
Font axisFont = new Font("榛戜綋", Font.PLAIN, 12);
jfchart.getLegend().setVisible(false);
piePlot.setLabelFont(axisFont); piePlot.setOutlinePaint(null); // override some default colors
DefaultDrawingSupplier defaults = new DefaultDrawingSupplier();
piePlot.setDrawingSupplier(new DefaultDrawingSupplier(colors,
new Paint[] { defaults.getNextFillPaint() },//
new Paint[] { defaults.getNextOutlinePaint() }, //
new Stroke[] { defaults.getNextStroke() },//
new Stroke[] { defaults.getNextOutlineStroke() },//
new Shape[] { defaults.getNextShape() }));// piePlot.setShadowPaint(Color.white); //
piePlot.setSectionOutlinesVisible(false); return false;
}
}
拆线图引擎
package chart; import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font; import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;
import org.zkoss.zkex.zul.impl.JFreeChartEngine;
import org.zkoss.zul.Chart; public class LineChartEngine extends JFreeChartEngine { private static final long serialVersionUID = 1L; private int width = 5;
private boolean showLine = true;
private boolean showShape = true;
private int series;
private int total; public LineChartEngine() { } public LineChartEngine(int series, int total) {
this.series = series;
this.total = total;
} public float minRange = 0.0f;
public float maxRange = 100.0f; public boolean prepareJFreeChart(JFreeChart jfchart, Chart chart) {
jfchart.setBackgroundPaint(Color.WHITE);
TextTitle subtitle = new TextTitle("2007年度", new Font("黑体", Font.BOLD, 12));
jfchart.addSubtitle(subtitle);
jfchart.setBorderStroke(null); CategoryPlot plot = (CategoryPlot) jfchart.getPlot(); plot.setDomainGridlinePaint(Color.LIGHT_GRAY);
plot.setRangeGridlinePaint(Color.LIGHT_GRAY);
plot.setBackgroundPaint(Color.WHITE);
plot.setOutlinePaint(Color.RED);// 边界线 LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); CategoryPlot plot1 = jfchart.getCategoryPlot(); plot1.setDomainGridlinesVisible(true);
plot1.setRangeGridlinesVisible(true);
plot1.setBackgroundPaint(Color.green);
// 设置曲线图与xy轴的距离
plot1.setAxisOffset(new RectangleInsets(0d, 0d, 0d, 0d));
plot.setAxisOffset(new RectangleInsets(0d, 0d, 0d, 0d)); Font font = new Font("宋体", Font.PLAIN, 10);
CategoryAxis categoryAxis = (CategoryAxis) plot1.getDomainAxis();
categoryAxis.setTickLabelFont(font);
// Y轴
NumberAxis numberaxis = (NumberAxis) plot.getRangeAxis();
numberaxis.setTickUnit(new NumberTickUnit(2D));
// numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
// 横轴
CategoryAxis dateaxis = (CategoryAxis) plot.getDomainAxis();
dateaxis.setMinorTickMarksVisible(false);
Font f = new Font("Serif", Font.PLAIN, 1);
plot.getDomainAxis().setTickLabelFont(f);
// plot.getDomainAxis(
// dateaxis.sett
numberaxis.setAutoRangeIncludesZero(true);
numberaxis.setAutoTickUnitSelection(true);
// numberaxis.setAutoRangeMinimumSize(0.01f);
numberaxis.setRange(minRange, maxRange);
// //获取同网卡的读或写
// int num=0;
// if(series>=total/2){
// num=series-total/2;
// }else{
// num=series+total/2;
// }
if (series >= 0) {
if (series >= total / 2) {
renderer.setSeriesLinesVisible(1, showLine);// 是否显示数据点连线
renderer.setSeriesShapesVisible(1, showShape);// 是否显示数据节点
renderer.setLegendTextFont(1, font);
renderer.setSeriesStroke(1, new BasicStroke(width)); renderer.setSeriesLinesVisible(0, showLine);// 0123,4567
renderer.setSeriesShapesVisible(0, showShape);
renderer.setLegendTextFont(0, font);
renderer.setSeriesStroke(0, new BasicStroke(1));
} else {
renderer.setSeriesLinesVisible(0, showLine);// 0123,4567
renderer.setSeriesShapesVisible(0, showShape);
renderer.setLegendTextFont(0, font);
renderer.setSeriesStroke(0, new BasicStroke(width)); renderer.setSeriesLinesVisible(1, showLine);// 0123,4567
renderer.setSeriesShapesVisible(1, showShape);
renderer.setLegendTextFont(1, font);
renderer.setSeriesStroke(1, new BasicStroke(1));
} } // 显示数据点数值
renderer.setBaseShapesVisible(true);
renderer.setBaseItemLabelsVisible(true);
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
TextAnchor.BASELINE_LEFT));
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelFont(new Font("宋体", 5, 12));
// for (int i = 0; i < total; i++) {
// if(i==series||i==num){
// continue;
// }
// renderer.setSeriesStroke(i, new BasicStroke(1));//设置线条粗细
// renderer.setSeriesShapesVisible(i, showShape);//数据点不可见
// renderer.setSeriesVisibleInLegend(i, false);//设置线条的图例不可见
// renderer.setLegendTextFont(i, font);//设置图例字体样式
// renderer.setSeriesLinesVisible(i, false);//曲线是否可见
// }
return false;
} public void setWidth(int width) {
this.width = width;
} public void setShowLine(boolean showLine) {
this.showLine = showLine;
} public void setShowShape(boolean showShape) {
this.showShape = showShape;
} public void setMinRange(float minRange) {
this.minRange = minRange;
} public void setMaxRange(float maxRange) {
this.maxRange = maxRange;
}
}
效果图:

ZK 使用jfreeChart的更多相关文章
- zk 起别名时候碰到的问题
第一次搭建时候都是用的ip,没什么问题,看到别人都是用的别名,于是也想试试把ip改成别名.然而 其中碰到的问题 ,快一周了才解决,现在记录下: 1.改主机别名 一直以为 修改 /etc/hosts 里 ...
- 基于ZK构建统一配置中心的方案和实践
背景: 近期使用Zk实现了一个简单的配置管理的小东西,在此开源出来,有兴趣的希望提出您的宝贵意见.如果恰巧您也使用或者接触过类似的东西, 也希望您可以分享下您觉得现在这个项目可以优化和改进的地方. 项 ...
- 【Java EE 学习 74 下】【数据采集系统第六天】【使用Jfreechart的统计图实现】【将JFreechart整合到项目中】
之前说了JFreechart的基本使用方法,包括生成饼图.柱状统计图和折线统计图的方法.现在需要将其整合到数据采集系统中根据调查结果生成三种不同的统计图. 一.统计模型的分析和设计 实现统计图显示的流 ...
- 【Java EE 学习 74 上】【数据采集系统第六天】【使用Jfreechart的统计图实现】【Jfreechart的基本使用方法】
之前已经实现了数据的采集,现在已经有了基本的数据,下一步就需要使用这些数据实现统计图的绘制了.这里使用Jfreechart实现这些统计图的绘制.首先看一下Jfreechart的基本用法,只有知道了它的 ...
- JFreeChart
花了四个小时给同学写的.还行吧,原来都没有用过到处找资料写的. package DrawLine; import org.jfree.chart.ChartFactory; import org.jf ...
- JFreechart在linux下不显示及中文乱码问题
一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...
- JFreechart 在linux下不显示及中文乱码问题
一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...
- dubbo zk 分布式服务项目搭建与配置
1. 项目 jar -----提供接口 2. 项目 jar -----接口实现 provider启动zk main方法启动 start applicationContext.xml <b ...
- ZK 最少限度加载页面js文件
官方文档说明: ZK Developer's Reference文档,章节为Minimize Number of JavaScript Files to Load,按照文档步骤执行,最后需在 web. ...
随机推荐
- C#上传图片
//一般处理程序 public void GetImageFromWeb() { //创建文件夹 //2016-10-14 dq string filePath = "~/ProductIm ...
- 初入水:vector
---恢复内容开始---Vector 是一个类模板.不是一种数据类型. Vector<int>是一种数据类型 类的作用,是一种顺序容器,支持随机访问,可动态分配空间(扩充:销毁旧内存,更新 ...
- 浅谈spring 声明式事物
此处主要讲讲事物的属性. 事物属性包含了五个方面: 1.传播行为 2.隔离规则 3.回滚规则 4.事物超时 5.是否只读 一.传播行为 事务的第一个方面是传播行为(propagation behavi ...
- ionic使用方法
windows下安装配置 npm install -g ionic npm install -g cordova ionic start myproject cd myproject ionic pl ...
- shell 指定范围产生随机数
#/bin/bash echo "---------------产生随机数---------------" read -p "请输入起始数:" a read - ...
- Mysql Master-slave 主从配置
MySQL主从复制 场景描述:主数据库服务器:192.168.10.130,MySQL已经安装,并且无应用数据.从数据库服务器:192.168.10.131,MySQL已经安装,并且无应用数据. 2. ...
- 读书笔记《深度探索c++对象模型》 概述
<深度探索c++对象模型>这本书是我工作一段时间后想更深入了解C++的底层实现知识,如内存布局.模型.内存大小.继承.虚函数表等而阅读的:此外在很多面试或者工作中,对底层的知识的足够了解也 ...
- tmpfs详解
一,tmpfs介绍 1. tmpfs是一种虚拟内存文件系统,正如这个定义它最大的特点就是它的存储空间在VM里面(什么是VM?后面介绍) 2. VM是由linux内核里面的vm子系统管理的东西,现在大多 ...
- asp.net core的TagHelper简单使用
TagHelper(标签助手)是ASP.NET Core非常好的一种新特性.可以扩展视图,让其看起来像一个原生HTML标签. 应该使用TagHelper替换HtmlHelper,因其更简洁更易用,且支 ...
- Oracle中生成随机数的函数(转载)
在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数,其中常用的有以下两个: DBMS_RANDOM.VALUE函数 该函数用来产生一个随机数,有两种用法: 1. 产 ...