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

构建可扩展的Java图表组件

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

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

  

sts北方站长站
图2-4sts北方站长站
  由这个类图,我们可以很容易的写出它的代码:sts北方站长站
public interface ChartWidget{ sts北方站长站
 public int getX(); sts北方站长站
 public int getY(); sts北方站长站
 public int getWidth(); sts北方站长站
 public int getHeight(); sts北方站长站
 public void draw(Graphics g); sts北方站长站
}
sts北方站长站
  坐标轴(Axis) sts北方站长站
  接下来的一个类是坐标轴Axis。坐标轴主要任务是绘制轴及其刻度(Tick)和刻度值,因为它绘制时是按一定的比例绘制的,所以它需要有一个比例尺将实际坐标值转换值成屏幕坐标值。这就引出了Scale这个类。Scale类主要完成实际坐标值到屏幕坐标值以及屏幕坐标值到实际坐标值的相互转化。由此,Axis与Scale是一对相互依赖的类。从设计模式的角度来看,Axis是视图(View),负责界面绘制,Scale就是它的模型(Model),负责提供相应的数据。它们的类图见图2-5: sts北方站长站
构建可扩展的Java图表组件sts北方站长站
图2-5sts北方站长站
  下面来分别看看Axis类与Scale类的代码: sts北方站长站
public abstract class Axis implements ChartWidgetsts北方站长站
{ sts北方站长站
protected Scale scale; sts北方站长站
protected int x; sts北方站长站
protected int y; sts北方站长站
protected int width; sts北方站长站
protected int height; sts北方站长站
protected Axis peerAxis; sts北方站长站
protected boolean drawGrid; sts北方站长站
protected Color gridColor; sts北方站长站
protected Color axisColor; sts北方站长站
protected int tickLength; sts北方站长站
protected int tickCount; sts北方站长站
public Axis() sts北方站长站
{ sts北方站长站
gridColor = Color.LIGHT_GRAY; sts北方站长站
axisColor = Color.BLACK; sts北方站长站
tickLength = 5; sts北方站长站
drawGrid = false; sts北方站长站
} sts北方站长站
public int getTickCount(){ return tickCount;} sts北方站长站
public void setTickCount(int tickCount){this.tickCount=tickCount;} sts北方站长站
public Scale getScale(){ return scale;} sts北方站长站
public void setScale(Scale scale){ this.scale = scale;} sts北方站长站
public int getX(){ return x;} sts北方站长站
public void setX(int x){this.x = x;} sts北方站长站
public int getY(){ return y;} sts北方站长站
public void setY(int y){this.y = y;} sts北方站长站
public int getHeight(){ return height;} sts北方站长站
public void setHeight(int height){this.height = height;} sts北方站长站
public int getWidth(){ return width;} sts北方站长站
public void setWidth(int width){this.width = width;} sts北方站长站
public boolean isDrawGrid(){return drawGrid;} sts北方站长站
public void setDrawGrid(boolean drawGrid){this.drawGrid=drawGrid;} sts北方站长站
public Color getAxisColor(){return axisColor;} sts北方站长站
public void setAxisColor(Color axisColor){ this.axisColor=axisColor;} sts北方站长站
public Color getGridColor(){return gridColor;} sts北方站长站
public void setGridColor(Color gridColor){this.gridColor=gridColor;} sts北方站长站
public int getTickLength(){return tickLength;} sts北方站长站
public void setTickLength(int tickLength){this.tickLength=tickLength;} sts北方站长站
public Axis getPeerAxis(){return peerAxis;} sts北方站长站
public void setPeerAxis(Axis peerAxis){this.peerAxis = peerAxis;}protected abstract int calculateTickLabelSize(Graphics g);}sts北方站长站
public abstract class Scale{ sts北方站长站
protected double min; sts北方站长站
protected double max; sts北方站长站
protected int screenMin; sts北方站长站
protected int screenMax; sts北方站长站
public abstract int getScreenCoordinate(double value); sts北方站长站
public double getActualValue(int value) sts北方站长站
{ sts北方站长站
double vrange = max - min; sts北方站长站
if(min < 0.0 && max < 0.0) sts北方站长站
vrange = (min - max) * -1.0; sts北方站长站
double i = screenMax - screenMin; sts北方站长站
i = ((double)(value - screenMin) * vrange) / i; sts北方站长站
i += min; sts北方站长站
return i; sts北方站长站
} sts北方站长站
public void setMax(double max){this.max = max;} sts北方站长站
public void setMin(double min){this.min = min;} sts北方站长站
public double getMax(){return max;} sts北方站长站
public double getMin(){return min;} sts北方站长站
public int getScreenMax(){return screenMax;} sts北方站长站
public int getScreenMin(){return screenMin;} sts北方站长站
public void setScreenMax(int screenMax){this.screenMax =screenMax;} sts北方站长站
public void setScreenMin(int screenMin){this.screenMin = screenMin;}sts北方站长站
}
sts北方站长站
  在上面的Axis类代码中,我们在原有的ChartWidget接口的基础上,为Axis添加了几个其它的属性:轴线的颜色axisColor,网格线的颜色gridColor及网格线的可见属性drawGrid。还有刻度线的长度和个数tickLength和tickCount。而peerAxis属性是参考坐标轴,在绘制坐标轴时的会用到。 Scale类也是抽象的,因为横轴和纵轴的屏幕坐标的转换方式不一样,所以getScreenCoordinate()方法留待子类来实现它。sts北方站长站

 

News

 

info

 

down

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

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

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

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

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

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