Hi Shruti,
I have developed the same application in j2me. I worked on graphs related to stocks. So i think my code can work for u too.
Here is the code for displaying bars:
package project;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
class BarCanvas extends Canvas {
public static boolean indicator=true;
public static int lenght=120;
int pad=2;
Font font;
private int fh;
String xName = "";
String yName = "VALUE";
private int xmargen=15;
private int ymargen=15;
private int initialx=0;
private int initialy=0;
int scale = 15;
private int bw=0;
int index=0;
int scaleincr;
int padincr;
int pady=0;
String s1;
//int bars[]={20,30,40,40,50,20,70,80,90};
int bars[]={20,30,40,50,300};
int k=bars.length;
int barinc=scale+bw+pad;
BarCanvas(String s1){
this.s1=s1;
font = Font.getFont(Font.FACE_SYSTEM,
Font.STYLE_PLAIN, Font.SIZE_SMALL);
fh = font.getHeight();
if(s1.equals("Tic"))
{
padincr=2;
bw=3;
scaleincr=3;
}
if(s1.equals("1 minute"))
{
padincr=2;
bw=3;
scaleincr=3;
}
if(s1.equals("5 minutes"))
{
padincr=2;
bw=3;
scaleincr=15;
}
if(s1.equals("15 minutes"))
{
padincr=10;
bw=5;
scaleincr=15;
}
if(s1.equals("Hourly"))
{
padincr=10;
bw=5;
scaleincr=1;
}
if(s1.equals("Daily"))
{
padincr=10;
bw=5;
scaleincr=1;
}
if(s1.equals("Weekly"))
{
padincr=10;
bw=5;
scaleincr=1;
}
}//linecanvas
public void paint(Graphics g) {
int width = getWidth();
int height = getHeight();
int titleHeight;
g.setFont(font);
int titlex1 = font.stringWidth("TIME");
int titlex = (width-titlex1)/2;
g.setColor(0,0,0);
g.fillRect(0, 0, width, height);
//set text on scales
setScaleName( xName, yName, titlex, height, width, g);
// x axis
drawXasxis( g, width, height,xmargen,ymargen);
//y axis
drawYasxis( g, xmargen, height,ymargen);
//horizontal scale
drawXhorizontalScales( g, width, height, scale,xmargen,ymargen);
//vertical scale
drawYVerticalScales(g, width,height,scale,xmargen,ymargen);
//draw x scale no.
setXScallNo( g, width, height, scale);
//draw y scale no.
setYScallNo( g, width, height, scale);
//draw line.
drawBar(g,height);
}
public void setXScallNo(Graphics g,int width,int height,int scale){
String s=initialx+"";
int increment =scaleincr;
for(int i= xmargen;i<width;i+=scale){
//G.drawLine(i, height-10, i, height-10);
g.drawString(s,i,height-2,Graphics.BOTTOM|Graphics.HCENTER);
s=(initialx+increment)+"";
increment+=scaleincr;
}
return;
}
public void setYScallNo(Graphics g,int width,int height,int scale){
String s=initialy+"";
int increment =scale;
for(int i= height-ymargen;i>0;i-=scale){
//G.drawLine(i, height-10, i, height-10);
g.drawString(s,0,i,Graphics.TOP|Graphics.LEFT);
s=(initialy+increment)+"";
increment+=scale;
}
return;
}
public void setScaleName(String xName,String yName,int titlex,int height,int width,Graphics g){
g.setColor(250,250,250);
g.drawString("X-scale=10",width-70,3,Graphics.TOP|Graphics.RIGHT);
g.drawString("Y-scale=10",width-10,3,Graphics.TOP|Graphics.RIGHT);
g.drawString(xName,width/2,(height-fh),Graphics.TOP|Graphics.LEFT);
int i=0;
for(int j=0;j<yName.length();j++){
String s=yName.charAt(j)+"";
g.drawString(s,1,(height/2)+i,Graphics.TOP|Graphics.LEFT);
i=i+10;
}
return;
}
public void drawXasxis(Graphics g,int width,int height,int xmargen,int ymargen){
g.setColor(0x6FFFFF);
g.drawLine(xmargen, height-ymargen, width , height-ymargen);
return;
}
public void drawYasxis(Graphics g,int xmargen,int height,int ymargen){
g.setColor(0x6FFFFF);
g.drawLine(xmargen,height-ymargen,xmargen,0);
return;
}
public void drawXhorizontalScales(Graphics g,int width,int height,int scale,int xmargen,int ymargen){
g.setColor(0x6FFFFF);
int j=0;
while(j><5){
for(int i= xmargen;i<width;i+=scale)
g.drawLine(i, height-(ymargen+j), i, height-ymargen);
j++;
}
return;
}
public void drawYVerticalScales(Graphics g,int width,int height,int scale,int xmargen,int ymargen){
g.setColor(0x6FFFFF);
int j=0;
while(j><5){
for(int i=height-ymargen;i>0;i-=scale){
g.drawLine(xmargen+j,i,xmargen+j,i);
}
j++;
}
return;
}
public void drawBar(Graphics g,int height){
int j=1;
for(int i=index;i<bars.length;i++,j++)
{
//g.drawRect(scale+bw*j+pad*j,(height-15)-bars,bw,bars);
g.drawRect(scale+bw*j+padincr*j,(height-ymargen)-bars-pady,bw,bars);
g.fillRect(scale+bw*j+padincr*j,(height-ymargen)-bars-pady,bw,bars);
}
}
public void setData(int length)
{
}
public int getData(){
return 0;
}
public void keyPressed(int keyCode) {
if ((keyCode==KEY_NUM4))
{
initialx=initialx+scaleincr;
if(s1.equals("5 minutes"))
{
if(index==0)
index=index+3;
else
index=index+4;
}
else if(s1.equals("15 minutes"))
{
if(index==0)
index=index+1;
else
index=index+1;
}
else
index=index+scaleincr;
repaint();
System.out.println(scaleincr);
}
if ((keyCode==KEY_NUM6))
{
if(initialx>0)
{
initialx=initialx-scaleincr;
if(s1.equals("5 minutes"))
{
if(index==3)
index=index-3;
else
index=index-4;
}
else if(s1.equals("15 minutes"))
{
if(index==1)
index=index-1;
else
index=index-1;
}
else
index=index-scaleincr;
//index=index-scaleincr;
}
repaint();
}
if ((keyCode==KEY_NUM2))
{
if(initialy>0)
{
pady=pady+15;
initialy=initialy-scale;
}
repaint();
}
if ((keyCode==KEY_NUM8))
{
pady=pady-15;
initialy=initialy+scale;
repaint();
}
}
protected void keyReleased(int keyCode)
{
}
protected void keyRepeated(int keyCode)
{
}
}
Similarly u can do for lines and candle sticks too.
If u need any help give any mail id to post jad or jar files.
Regards ,
Deepika