how create graphs(pie and bar graphs) in j2me

hi friends,how to create graphs in j2me?plz help me.regards,Shruthi R S
[106 byte] By [shruthirsa] at [2007-11-26 22:30:44]
# 1

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

Deepika_nca at 2007-7-10 11:35:47 > top of Java-index,Java Mobility Forums,Java ME Technologies...