前台:

<?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;
}
}

效果图:

jar包下载

ZK 使用jfreeChart的更多相关文章

  1. zk 起别名时候碰到的问题

    第一次搭建时候都是用的ip,没什么问题,看到别人都是用的别名,于是也想试试把ip改成别名.然而 其中碰到的问题 ,快一周了才解决,现在记录下: 1.改主机别名 一直以为 修改 /etc/hosts 里 ...

  2. 基于ZK构建统一配置中心的方案和实践

    背景: 近期使用Zk实现了一个简单的配置管理的小东西,在此开源出来,有兴趣的希望提出您的宝贵意见.如果恰巧您也使用或者接触过类似的东西, 也希望您可以分享下您觉得现在这个项目可以优化和改进的地方. 项 ...

  3. 【Java EE 学习 74 下】【数据采集系统第六天】【使用Jfreechart的统计图实现】【将JFreechart整合到项目中】

    之前说了JFreechart的基本使用方法,包括生成饼图.柱状统计图和折线统计图的方法.现在需要将其整合到数据采集系统中根据调查结果生成三种不同的统计图. 一.统计模型的分析和设计 实现统计图显示的流 ...

  4. 【Java EE 学习 74 上】【数据采集系统第六天】【使用Jfreechart的统计图实现】【Jfreechart的基本使用方法】

    之前已经实现了数据的采集,现在已经有了基本的数据,下一步就需要使用这些数据实现统计图的绘制了.这里使用Jfreechart实现这些统计图的绘制.首先看一下Jfreechart的基本用法,只有知道了它的 ...

  5. JFreeChart

    花了四个小时给同学写的.还行吧,原来都没有用过到处找资料写的. package DrawLine; import org.jfree.chart.ChartFactory; import org.jf ...

  6. JFreechart在linux下不显示及中文乱码问题

    一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...

  7. JFreechart 在linux下不显示及中文乱码问题

    一.使用JFreeChart建的报表,在window下能正常显示,但是放到linux下就报错,而且有时候会把tomcat挂掉, 原因是jfreechart的在linux系统中需要访问java awt库 ...

  8. dubbo zk 分布式服务项目搭建与配置

    1. 项目 jar  -----提供接口 2. 项目 jar  -----接口实现   provider启动zk main方法启动 start applicationContext.xml <b ...

  9. ZK 最少限度加载页面js文件

    官方文档说明: ZK Developer's Reference文档,章节为Minimize Number of JavaScript Files to Load,按照文档步骤执行,最后需在 web. ...

随机推荐

  1. MAC OS PHP

    Apache与PHP的配置 OSX自带了apache和php,但默认情况下没有开启,打开终端 sudo apachectl start 这时在浏览器中输入localhost应该就会出现apache标准 ...

  2. PostgreSQL 允许远程访问设置方法

     安装PostgreSQL数据库之后,默认是只接受本地访问连接.如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置. 配置远程连接PostgreSQL数据库的步骤很简单,只需 ...

  3. RecyclerView的使用之多种Item加载布局

    精益求精,为了更加透彻熟练得掌握,本文再次给大家介石介绍下如何利用RecyclerView实现多Item布局的加载,多Item布局的加载的意思就是在开发过程中List的每一项可能根据需求的不同会加载不 ...

  4. GridView模版列中设置

    在GridView模版列中设置如下<asp:TemplateField HeaderText="删除">    <ItemTemplate>         ...

  5. 切换debian8系统语言环境

    想切换操作系统的默认语言环境,可以使用如下命令,而不用重新安装系统: 查看操作系统的语言: # env | grep LANG 使用root导入要使用的系统语言: # export LANG=en_U ...

  6. Java笔记:修饰符

    Synchronized 修饰符 Synchronized 关键字声明的方法同一时间只能被一个线程访问.Synchronized 修饰符可以应用于四个访问修饰符. 实例 public synchron ...

  7. Mysql中eft join、right join、inner join的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  8. zeromq系列

    ZeroMQ系列 之NetMQ 一:zeromq简介 二:NetMQ 请求响应模式 Request-Reply 三:NetMQ 发布订阅模式 Publisher-Subscriber 四:NetMQ ...

  9. Ubuntu菜鸟入门(九)—— 支付宝支付控件安装

    一.下载 使用支付宝的时候会提示下载 二.安装 1.打开到下载目录 2.使用命令 tar -zxvf aliedit.tar.gz ./aliedit.sh

  10. vue学习之旅

    大纲: 属性 事件 循环 指令 交互 过滤器 模板 计算属性 自定义过滤器和指令 组件(父子组件之间的通讯) 路由和多层路由以及占位槽slot等其他 vue-loader和模块加载(webpack)等 ...