北方站长站
客服热线:0632-5117766

构建可扩展的Java图表组件

[2005-12-26 00:00:00] 作者:Northz.com 来源:北方站长站

Tags:组件 图表 扩展 构建 int public 一个 坐标 我们 数据

  

sts北方站长站
 图2-7sts北方站长站
  由于篇幅有限,在此就不列出Chart类的代码了。 sts北方站长站
  完成一个折线图sts北方站长站
  由于前面介绍的只是一些接口或抽象类,要完成一个图表组件,还必须实现它们,下面我们以一个折线图为例,来完成一个完整的折线图。sts北方站长站
  实现x轴和y轴sts北方站长站
  其实前面的Axis抽象类已经完成一个大部分的操作,余下的就是分别完成x轴和y轴的绘制了。在这里我们就不打算列出完整的类代码,只列出关键的实现部分。sts北方站长站
Public class XAxis extends Axissts北方站长站
{ sts北方站长站
 …… sts北方站长站
 public void draw(Graphics g) sts北方站长站
 { sts北方站长站
  if ( ! (scale instanceof XScale) ) sts北方站长站
   return; sts北方站长站
  int ticks = getTickCount(); sts北方站长站
  int tickDist = (int) ((double)(scale.getScreenMax()-scale.getScreenMin())/(double)(ticks+1)); sts北方站长站
  int tickX = scale.getScreenMin(); sts北方站长站
  int tickY = peerAxis.getScale().getScreenMin(); sts北方站长站
  int gridLength = peerAxis.getScale().getScreenMax(); sts北方站长站
  int axisLength = scale.getScreenMax()-scale.getScreenMin(); sts北方站长站
  /*设置轴线颜色*/ sts北方站长站
  g.setColor(axisColor); sts北方站长站
  /*绘制横轴*/ sts北方站长站
  g.drawLine(tickX, tickY, tickX+axisLength,tickY); sts北方站长站
  for ( int i = 0 ; i < ticks; i++ ) sts北方站长站
  { sts北方站长站
   tickX = scale.getScreenMin()+tickDist*(i+1); sts北方站长站
   if ( isDrawGrid() ) sts北方站长站
   { sts北方站长站
    /*如果drawGrid属性为true,用gridColor绘制网格线*/ sts北方站长站
    g.setColor(gridColor); sts北方站长站
    g.drawLine(tickX, tickY , tickX, gridLength );sts北方站长站
   }sts北方站长站
   /*绘制刻度线*/ sts北方站长站
   g.setColor(axisColor); sts北方站长站
   g.drawLine(tickX, tickY , tickX, tickY+tickLength); sts北方站长站
   int tickLabelWidth = g.getFontMetrics().stringWidth(String.valueOf(i+1)); sts北方站长站
   int tickLabelHeight = g.getFontMetrics().getHeight(); sts北方站长站
   g.drawString(String.valueOf(i+1), tickX-(tickLabelWidth/2), tickY+tickLabelHeight); sts北方站长站
  } sts北方站长站
 }sts北方站长站
}sts北方站长站
public class YAxis extends Axissts北方站长站
{ sts北方站长站
 public void draw(Graphics g) sts北方站长站
 { sts北方站长站
  if ( ! (scale instanceof YScale) ) sts北方站长站
   return; sts北方站长站
  int ticks = getTickCount(); sts北方站长站
  int tickDist = (int) Math.abs((double)(scale.getScreenMax() -  scale.getScreenMin())/(double)(ticks+1)); sts北方站长站
  int tickY = scale.getScreenMin(); sts北方站长站
  int tickX = peerAxis.getScale().getScreenMin(); sts北方站长站
  int gridLength = peerAxis.getScale().getScreenMax(); sts北方站长站
  int axisLength = scale.getScreenMax(); sts北方站长站
  /*绘制纵坐标轴*/ sts北方站长站
  g.setColor(axisColor); sts北方站长站
  g.drawLine(tickX, tickY, tickX, axisLength); sts北方站长站
  for ( int i = 0 ; i < ticks; i++ ) sts北方站长站
  { sts北方站长站
   tickY = scale.getScreenMin()-tickDist*(i+1); sts北方站长站
   if ( isDrawGrid() ) sts北方站长站
   { sts北方站长站
    /*如果drawGrid属性为true,用gridColor绘制网格线*/ sts北方站长站
    g.setColor(gridColor); sts北方站长站
    g.drawLine(tickX, tickY , gridLength, tickY );sts北方站长站
   }sts北方站长站
   /*绘制刻度线*/ sts北方站长站
   g.setColor(axisColor); sts北方站长站
   g.drawLine(tickX, tickY , tickX-tickLength, tickY); sts北方站长站
   int tickLabelWidth = g.getFontMetrics().stringWidth(String.valueOf(i+1)); sts北方站长站
   g.drawString(String.valueOf(i+1), tickX-tickLength-tickLabelWidth, tickY); sts北方站长站
  } sts北方站长站
 }sts北方站长站
}
sts北方站长站

 

News

 

info

 

down

出售手机裁听器,手机跟踪定位系统    企业网站,网城,购物网,都市导购,校园网    网上书店系统    上海电信机房服务器托管,双线主机托管    美女图片馆    15G 高清晰图片资源 无水印    室内装潢材料新产品杰威尔艺术漆    收一万ip的美女图片    大量收购个人网址导航网站    出售网址站PR=4alexa=119,764    

上一页 1 2 3 4 5 6 7 8 9 下一页

下一篇链接:Tapestry组件使用总结

上一篇链接:用XSLT和XML改进Struts

评论】 【打印】 【加入收藏】 【关闭→论坛 →博客 →数据中心

 共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面