网上仪表盘的资料挺少的 而且多是简单的 单针仪表 做了个时间的
在web端调用 每秒调一次可以实现动态时间
public static JFreeChart creaTimePanel(int hour, int minute, int second) {
// 1,数据集合对象 此处为DefaultValueDataset
DefaultValueDataset dataset = new DefaultValueDataset();
// 当前指针指向的位置,即:我们需要显示的数据
dataset.setValue(hour);
DefaultValueDataset dataset3 = new DefaultValueDataset();
dataset3.setValue(minute);
DefaultValueDataset dataset2 = new DefaultValueDataset();
dataset2.setValue(second);
/**
* 获取图表区域对象
* A. setDataSet(int index, DataSet dataSet);
* 为表盘设定使用的数据集,通常一个表盘上可能存在多个指针, 因此需要制定该数据集与哪个指针相互关联。 可以将指针想象成数据集的一种体现方式。
*/
DialPlot dialplot = new DialPlot();
dialplot.setView(0.0D, 0.0D, 1.0D, 1.0D);
dialplot.setDataset(0, dataset);
dialplot.setDataset(1, dataset2);
dialplot.setDataset(2, dataset3);
// System.out.println("dataset count:"+dialplot.getDatasetCount());
/**
* 开始设置显示框架结构 B. setDailFrame(DailFrame dailFrame);
* 设置表盘的底层面板图像,通常表盘是整个仪表的最底层。
*/
StandardDialFrame dialFrame = new StandardDialFrame();
dialFrame.setBackgroundPaint(Color.lightGray);
dialFrame.setForegroundPaint(Color.darkGray);
dialplot.setDialFrame(dialFrame);
/**
* 结束设置显示框架结构 C. setBackground(Color color);
* 设置表盘的颜色,可以采用Java内置的颜色控制方式来调用该方法。
*/
GradientPaint gradientpaint = new GradientPaint(new Point(), new Color(255, 255, 255), new Point(), new Color(170, 170, 220));
DialBackground dialbackground = new DialBackground(gradientpaint);
dialbackground.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL));
dialplot.setBackground(dialbackground);
// 设置显示在表盘中央位置的信息
DialTextAnnotation dialtextannotation = new DialTextAnnotation("");
dialtextannotation.setFont(new Font("Dialog", 1, 14));
dialtextannotation.setRadius(0.69999999999999996D);
dialplot.addLayer(dialtextannotation);
/**
* 指针指向的数据,用文本显示出来,并指向一个数据集
* DialValueIndicator dialvalueindicator = new DialValueIndicator(0);
* dialplot.addLayer(dialvalueindicator);
*/
DialValueIndicator dvi = new DialValueIndicator(0);
dvi.setFont(new Font("Dialog", Font.PLAIN, 10));
dvi.setOutlinePaint(Color.darkGray);
dvi.setRadius(0.60);
dvi.setAngle(-103.0);
dialplot.addLayer(dvi);
DialValueIndicator dvi1 = new DialValueIndicator(2);
dvi1.setFont(new Font("Dialog", Font.PLAIN, 10));
dvi1.setOutlinePaint(Color.red);
dvi1.setRadius(0.60);
dvi1.setAngle(-90.0);
dialplot.addLayer(dvi1);
DialValueIndicator dvi2 = new DialValueIndicator(1);
dvi2.setFont(new Font("Dialog", Font.PLAIN, 10));
dvi2.setOutlinePaint(Color.red);
dvi2.setRadius(0.60);
dvi2.setAngle(-77.0);
dialplot.addLayer(dvi2);
// 根据表盘的直径大小(0.75),设置总刻度范围
/**
* F. addScale(int index, DailScale dailScale);
* 用于设定表盘上的量程,index指明该量程属于哪一个指针所指向的数据集, DailScale指明该量程的样式,如量程的基本单位等信息。
* StandardDialScale(double lowerBound, double upperBound, double
* startAngle, double extent, double majorTickIncrement, int
* minorTickCount) new StandardDialScale(-40D, 60D, -120D, -300D,30D);
*/
// 对应pointer
StandardDialScale dialScale1 = new StandardDialScale(0.0D, 12D, 90D, -360D, 1, 4);
dialScale1.setFirstTickLabelVisible(false);
dialScale1.setMajorTickIncrement(1);
// 设置表刻度和数字离中心的半径
dialScale1.setTickRadius(0.90D);
// 设置数字离开表盘的距离
dialScale1.setTickLabelOffset(0.1D);
dialScale1.setTickLabelFont(new Font("宋体", 0, 14));
dialScale1.setTickRadius(0.88D); // 值越大,与刻度盘框架边缘越近
dialScale1.setTickLabelOffset(0.14999999999999999D); // 值越大,与刻度盘刻度越远0
// .14999999999999999D
dialScale1.setTickLabelFont(new Font("Dialog", 0, 14)); // 刻度盘刻度字体
dialplot.addScale(0, dialScale1);
// 对应pin
StandardDialScale dialScale2 = new StandardDialScale(0.0D, 60D, 90D, -360D, 5, 4);
dialScale2.setFirstTickLabelVisible(false);
// 设置表刻度和数字离中心的半径
dialScale2.setTickRadius(0.65D);
dialScale2.setTickLabelFont(new Font("宋体", 0, 14));
dialScale2.setTickLabelFont(new Font("Dialog", 0, 10)); // 设置刻度盘字体类型
// dialScale2.setTickLabelPaint(new Color(255,0,0)); //设置刻度盘字体颜色
dialScale2.setMinorTickPaint(Color.BLUE); // 设置刻度盘小刻度颜色为red
dialScale2.setMajorTickPaint(new Color(255, 0, 0)); // 设置刻度盘大刻度颜色为red
dialplot.addScale(1, dialScale2);
/**
* 设置指针 G. addPointer(DailPointer dailPointer);
* 用于设定表盘使用的指针样式,JFreeChart中有很多可供选择指针样式,
* 用户可以根据使用需要,采用不同的DailPoint的实现类来调用该方法
*/
// 指针一
Pointer pointer = new Pointer(0); // 内部内
pointer.setRadius(0.60); // 设置指针半径,也就是指针长短
dialplot.addPointer(pointer); // addLayer(pointer);
dialplot.mapDatasetToScale(0, 0); // Scale与Dataset对应
// 指针二
Pin pin = new Pin(1);
pin.setPaint(new GradientPaint(new Point(), new Color(255, 0, 0), new Point(), new Color(170, 170, 220))); // 设置指针样式
pin.setRadius(0.50); // 设置指针半径,也就是指针长短
dialplot.addPointer(pin);
dialplot.mapDatasetToScale(1, 1); // Scale与Dataset对应
// 指针三
Pointer pin1 = new Pointer(2);
pin1.setRadius(0.80); // 设置指针半径,也就是指针长短
dialplot.addPointer(pin1);
dialplot.mapDatasetToScale(2, 1); // Scale与Dataset对应
/**
* 实例化DialCap H. setCap(DailCap dailCap); 1,设定指针上面的盖帽的样式。 2,也就是设置指针的起点的圆
*/
DialCap dialcap = new DialCap();
dialcap.setRadius(0.0700000000000001D);// 0.10000000000000001D
dialplot.setCap(dialcap);
// 生成chart对象
JFreeChart jfreechart = new JFreeChart(dialplot);
// 设置标题
jfreechart.setTitle("时间表");
return jfreechart;
}
/**
* @param chart
* JFreeChart
* @param resp
* Response
* @param width
* 宽度
* @param height
* 高度
*/
public static void write(JFreeChart chart, HttpServletResponse resp, int width, int height) {
try {
resp.setContentType("image/jpeg");
resp.setHeader("pragma", "no-cache");
resp.setHeader("cache-control", "no-cache");
resp.setHeader("expires", "0");
OutputStream out = resp.getOutputStream();
ChartUtilities.writeChartAsJPEG(out, chart, width, height);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void creaTimePanel(HttpServletResponse response) {
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);// 小时
int minute = cal.get(Calendar.MINUTE);// 分
int second = cal.get(Calendar.SECOND);// 秒
if (chart != null && chart.getTitle().getText().equals("时间表")) {
DialPlot dialplot = (org.jfree.chart.plot.dial.DialPlot) chart.getPlot();
DefaultValueDataset dataset = new DefaultValueDataset();
dataset.setValue(hour);
DefaultValueDataset dataset3 = new DefaultValueDataset();
dataset3.setValue(minute);
DefaultValueDataset dataset2 = new DefaultValueDataset();
dataset2.setValue(second);
dialplot.setView(0.0D, 0.0D, 1.0D, 1.0D);
dialplot.setDataset(0, dataset);
dialplot.setDataset(1, dataset2);
dialplot.setDataset(2, dataset3);
} else {
chart = JfreeChartUtil.creaTimePanel(hour, minute, second);
}
JfreeChartUtil.write(chart, response, 8 * 120, 8 * 120);
}
分享到:
相关推荐
JFreeChart是一个强大的Java图表库,它允许开发者创建多种类型的静态和动态图表,包括饼图、柱状图、线图、散点图以及我们这里关注的仪表盘。在这个例子中,我们将探讨如何利用JFreeChart来创建一个动态的仪表盘。 ...
为了制作仪表盘,我们需要先理解JFreeChart中的` DialPlot `类,它是仪表盘的核心组件。`DialPlot`允许设置多个指针和刻度,以显示不同的数据值。我们可以自定义指针的颜色、形状以及刻度的样式,以适应不同的视觉...
**JFreeChartDemo 仪表盘** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图以及仪表盘等。在给定的“JfreeChartDemo 仪表盘”中,我们将深入探讨如何使用 ...
创建JfreeChart仪表盘的过程主要包括以下几个步骤: 1. **创建ChartFactory**:使用JfreeChart提供的`ChartFactory`类创建基础图表,例如`create DialChart()`方法。 2. **配置DialFrame**:定义仪表盘的基本结构...
**JFreeChart仪表盘** 在Java Web项目中,仪表盘是一种常见的数据展示方式,用于快速地呈现关键性能指标或统计数据。JFreeChart提供了一种灵活的方式来创建自定义仪表盘,可以调整颜色、样式、数值范围等,以满足...
根据 JFreeChart 生成仪表盘, public static void main(String[] args) { System.out.println(new HC().getHC("TEST","123")); }
【Java程序中用JFreeChart制作图形报表】 JFreeChart是一个强大的开源Java库,用于创建各种图表,如折线图、柱状图、饼图、散点图等。在Java程序中,我们可以利用JFreeChart来生成图形报表,以便更好地可视化和理解...
本文将深入探讨如何利用`JFreeChart`创建仪表盘(Dial Chart),并通过示例代码详细解释其配置方法。 #### 二、JFreeChart简介 `JFreeChart`是一款完全由Java编写的开源图表绘制类库,它能够生成各种类型的图表。...
Java 使用 JFreeChart 创建柱形图是一种常见的数据可视化方法,尤其在数据分析和Web应用程序中。JFreeChart 是一个强大的开源库,它提供了多种图表类型,包括柱形图、饼图、线图等,使得开发者能够方便地将数据转化...
标题“Spring+JFreeChart 自动生成统计图”涉及的是在Java开发环境中,利用Spring框架和JFreeChart库来动态生成图表的技巧。这篇文章可能是介绍如何在Spring应用中集成JFreeChart,以便为数据可视化提供服务。 ...
对于"java jfreechart 仪表盘显示空间"这个描述,它可能是指利用JFreeChart创建一个仪表盘界面来展示特定空间或者资源的使用情况,例如内存使用率、硬盘空间等。仪表盘的特性使其能够有效地显示复杂信息,使用户...
在本篇文章中,我们将深入探讨如何使用JFreeChart库来制作这些美丽的图表,并了解其核心功能和应用场景。 首先,JFreeChart的设计目标是提供一个可扩展的框架,能够生成多种类型的图表,包括但不限于: 1. 条形图...
《JFreeChart制作图形报表》 本文将详细介绍如何使用JFreeChart库创建图形报表,以满足特定的需求。首先,我们从需求分析开始。 在我们的示例中,需求源于一个有趣的场景:通过量化日常感情生活,为决策提供数据...
在JFreeChart水晶报表制作中,首先我们需要了解JFreeChart的基本用法。JFreeChart的核心是`ChartFactory`类,它提供了创建各种图表的静态方法。例如,要创建一个简单的柱状图,我们可以调用`ChartFactory....
除了股票线图,JFreeChart还支持创建仪表盘图表(Gauge Chart),用于直观地展示股票的某些指标,如市盈率、市值等。通过`GaugeDataset`和`GaugePlot`,我们可以定制表盘的范围、指针颜色、背景样式等。 **五、实战...
在Java开发中,动态仪表盘显示是一项常用的功能,主要用于数据可视化,帮助用户快速理解复杂的业务信息。本项目涉及的是一个基于Java实现的查询显示页面,其中包含了一个筛选报警功能以及动态仪表盘显示。下面我们将...
jFreeChart是一个开源的Java库,用于生成高质量的图表,支持多种图表类型,如柱状图、饼图、线形图、散点图、仪表盘、时钟表等。这个库广泛应用于Java应用程序、Web应用、报表系统以及数据可视化项目中。jFreeChart...
它在各种应用中广泛使用,包括报表、仪表盘、科学出版物等,提供了丰富的图表类型,如饼图、柱状图、线图、散点图和时间序列图等。 在描述中提到的链接指向了博客文章 "https://jose-bing.iteye.com/blog/1168128"...