读书人

JFreeChart表格实现仪表盘

发布时间: 2012-10-24 14:15:58 作者: rapoo

JFreeChart报表实现仪表盘

import java.awt.Color;import java.awt.Font;import java.awt.GradientPaint;import java.awt.Point;import org.jfree.chart.ChartFrame;import org.jfree.chart.JFreeChart;import org.jfree.chart.plot.dial.DialBackground;import org.jfree.chart.plot.dial.DialCap;import org.jfree.chart.plot.dial.DialPlot;import org.jfree.chart.plot.dial.DialTextAnnotation;import org.jfree.chart.plot.dial.DialValueIndicator;import org.jfree.chart.plot.dial.StandardDialFrame;import org.jfree.chart.plot.dial.StandardDialScale;import org.jfree.chart.plot.dial.DialPointer.Pin;import org.jfree.chart.plot.dial.DialPointer.Pointer;import org.jfree.data.general.DefaultValueDataset;import org.jfree.ui.GradientPaintTransformType;import org.jfree.ui.RefineryUtilities;import org.jfree.ui.StandardGradientPaintTransformer;/** * 仪表盘制作 *  * @author Administrator *  */public class DialDemo3 {public static void main(String[] args) {// 1,数据集合对象 此处为DefaultValueDatasetDefaultValueDataset dataset = new DefaultValueDataset();// 当前指针指向的位置,即:我们需要显示的数据dataset.setValue(10D);DefaultValueDataset dataset2 = new DefaultValueDataset();dataset2.setValue(20D);/** * 获取图表区域对象 *  * 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);// 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("km/h");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 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); */// 对应pointerStandardDialScale dialScale1 = new StandardDialScale();dialScale1.setLowerBound(-40D); // 最底表盘刻度dialScale1.setUpperBound(60D); // 最高表盘刻度dialScale1.setStartAngle(-120D); // 弧度为120,刚好与人的正常视觉对齐dialScale1.setExtent(-300D); // 弧度为300,刚好与人的正常视觉对齐dialScale1.setTickRadius(0.88D); // 值越大,与刻度盘框架边缘越近dialScale1.setTickLabelOffset(0.14999999999999999D); // 值越大,与刻度盘刻度越远0// .14999999999999999DdialScale1.setTickLabelFont(new Font("Dialog", 0, 14)); // 刻度盘刻度字体dialplot.addScale(0, dialScale1);// 对应pinStandardDialScale dialScale2 = new StandardDialScale();dialScale2.setLowerBound(0D);dialScale2.setUpperBound(100D);dialScale2.setStartAngle(-120D);dialScale2.setExtent(-300D);dialScale2.setTickRadius(0.52D);dialScale2.setTickLabelOffset(0.1D);dialScale2.setTickLabelFont(new Font("Dialog", 0, 10));  //设置刻度盘字体类型//dialScale2.setTickLabelPaint(new Color(255,0,0));  //设置刻度盘字体颜色dialScale2.setMinorTickPaint(new Color(255,0,0));  //设置刻度盘小刻度颜色为reddialScale2.setMajorTickPaint(new Color(255,0,0));  //设置刻度盘大刻度颜色为reddialplot.addScale(1, dialScale2);/** * 设置指针 G. addPointer(DailPointer dailPointer); * 用于设定表盘使用的指针样式,JFreeChart中有很多可供选择指针样式, * 用户可以根据使用需要,采用不同的DailPoint的实现类来调用该方法 */// 指针一Pointer pointer = new Pointer(0); // 内部内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对应/** * 实例化DialCap H. setCap(DailCap dailCap); 1,设定指针上面的盖帽的样式。 2,也就是设置指针的起点的圆 */DialCap dialcap = new DialCap();dialcap.setRadius(0.0700000000000001D);// 0.10000000000000001Ddialplot.setCap(dialcap);// 生成chart对象JFreeChart jfreechart = new JFreeChart(dialplot);// 设置标题jfreechart.setTitle("仪表盘");ChartFrame frame = new ChartFrame("仪表盘", jfreechart,true);frame.pack();// 屏幕居中RefineryUtilities.centerFrameOnScreen(frame);frame.setVisible(true);}}
1 楼 带个回家 2012-02-22 要jar包的找我,或者自己下载:
PS:本人只罗列自己全部的jar包,肯定跑得起,至于多余的,请你们自己慢慢测试哈
http://developer.aiwgame.com
[url href="http://developer.aiwgame.com"]gnujaxp.jar
iText-2.1.5.jar
jcommon-1.0.17.jar
jfreechart-1.0.14-experimental.jar
jfreechart-1.0.14-swt.jar
jfreechart-1.0.14.jar
junit.jar
servlet.jar
swtgraphics2d.jar[/url]

读书人网 >行业软件

热点推荐