快速业务通道

构建可扩展的Java图表组件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
getTickCount();   int tickDist = (int) ((double)(scale.getScreenMax()-scale.getScreenMin())/(double)(ticks+1));   int tickX = scale.getScreenMin();   int tickY = peerAxis.getScale().getScreenMin();   int gridLength = peerAxis.getScale().getScreenMax();   int axisLength = scale.getScreenMax()-scale.getScreenMin();   /*设置轴线颜色*/   g.setColor(axisColor);   /*绘制横轴*/   g.drawLine(tickX, tickY, tickX+axisLength,tickY);   for ( int i = 0 ; i < ticks; i++ )   {    tickX = scale.getScreenMin()+tickDist*(i+1);    if ( isDrawGrid() )    {     /*如果drawGrid属性为true,用gridColor绘制网格线*/     g.setColor(gridColor);     g.drawLine(tickX, tickY , tickX, gridLength );    }    /*绘制刻度线*/    g.setColor(axisColor);    g.drawLine(tickX, tickY , tickX, tickY+tickLength);    int tickLabelWidth = g.getFontMetrics().stringWidth(String.valueOf(i+1));    int tickLabelHeight = g.getFontMetrics().getHeight();    g.drawString(String.valueOf(i+1), tickX-(tickLabelWidth/2), tickY+tickLabelHeight);   }  } } public class YAxis extends Axis {  public void draw(Graphics g)  {   if ( ! (scale instanceof YScale) )    return;   int ticks = getTickCount();   int tickDist = (int) Math.abs((double)(scale.getScreenMax() -  scale.getScreenMin())/(double)(ticks+1));   int tickY = scale.getScreenMin();   int tickX = peerAxis.getScale().getScreenMin();   int gridLength = peerAxis.getScale().getScreenMax();   int axisLength = scale.getScreenMax();   /*绘制纵坐标轴*/   g.setColor(axisColor);   g.drawLine(tickX, tickY, tickX, axisLength);   for ( int i = 0 ; i < ticks; i++ )   {    tickY = scale.getScreenMin()-tickDist*(i+1);    if ( isDrawGrid() )    {     /*如果drawGrid属性为true,用gridColor绘制网格线*/     g.setColor(gridColor);     g.drawLine(tickX, tickY , gridLength, tickY );    }    /*绘制刻度线*/    g.setColor(axisColor);    g.drawLine(tickX, tickY , tickX-tickLength, tickY);    int tickLabelWidth = g.getFontMetrics().stringWidth(String.valueOf(i+1));    g.drawString(String.valueOf(i+1), tickX-tickLength-tickLabelWidth, tickY);   }  } }

构建可扩展的Java图表组件(8)

时间:2010-09-13

实现画折线的LinePlot

由于Plot是由DataSeries为它提供绘图数据的,在实现LinePlot之前,先来实现一个DefaultDataSeries类:

public class DefaultDataSeries extends DataSeries {  public DefaultDataSeries(Object[] yData) throws InvalidDataException  {   super();   if ( yData == null || !(yData[0] instanceof Double) )    throw new InvalidDataException();   for ( int i = 0;i<yData.length;i++ )   {    /*将y值添加到序列中*/    this.yData.add(yData[i]);    /*根据y值的个数,从1开始自动添加相应数量的x值*/    this.xData.add(new Double(i+1));   }  } }

这个DefaultDataSeries提供了一个构造方法,使用者只需提供一组y坐标值,即可构造一个DataSeries了。

下面是很重要的部分了。我们来看看实现一个画折线的LinePlot是多么的简单:

Public cla

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号