Creating Canvas Form Example

This example shows that how to use the Canvas Class in a Form. In this example we take two field in which integer number passed from the form and result will display on a Canvas circle.

Creating Canvas Form Example

Creating Canvas Form Example

     

This example shows that how to use the Canvas Class in a Form. In this example we take two field in which integer number passed from the form and result will display on a Canvas circle. The Following methods are used in this example:

  • getWidth()
  • getHeight()
  • setColor()
  • fillRect()
  • setGrayScale()
  • drawString()

We calculate the both integer value ("A" and "B") in the calculator() function and store the result in a integer value ("result") variable which is integer value.

See The Application Below:

 

 

Source Code CanvasForm.java

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class CanvasForm extends MIDlet implements CommandListener{
  private Display display;
  private Form form;
  private Displayable current;
  private TextField one, two;
  private StringItem item;
  private long result;
  private Command quit, add ;
  private CanvasClass canvas;
  int first=0, second=0;

  public CanvasForm(){
  form = new Form("Calculator");
  one = new TextField(null, "10000002", 8, TextField.NUMERIC );
  two = new TextField(null, "10000003", 8, TextField.NUMERIC );
  item = new StringItem("Result", "");
  quit = new Command("Quit", Command.EXIT, 0);
  add = new Command("Add", Command.SCREEN, 0);
  form.append(one);
  form.append(two);
  form.append(item);
  form.addCommand(add);
  form.addCommand(quit);
  form.setCommandListener(this);
  }

  public void startApp(){
  display=Display.getDisplay(this);
  if (current!=null)
  display.setCurrent(current);
  else{
  display.setCurrent(form);
  current=form;
  }
  }

  public void pauseApp(){}

  public void destroyApp(boolean b){}
  
  private void calculate(){
  try {
  first = Integer.parseInt( one.getString() );
  second = Integer.parseInt( two.getString() );
  result = first + second ;
  item.setText( result + "" );
  } catch (NumberFormatException e){
  item.setText("unknown");
  e.printStackTrace();
  }
  }

  public void commandAction(Command c, Displayable s){
  if (c == quit){
  notifyDestroyed();
  return;
  }
  calculate();
  if (canvas==null) canvas= new CanvasClass() ;
  current=canvas;
  display.setCurrent(canvas);
  }

  class CanvasClass extends Canvas implements CommandListener{
  CanvasClass(){
  this.addCommand( new Command("Back", Command.BACK, 0 ) );
  this.setCommandListener(this);
  }

  protected void paint(Graphics g){
  int w = getWidth();
  int h = getHeight();
  g.setColor(244,244,244);
  g.fillRect( 0,0,w,h );
  g.setGrayScale(12*14);
  h = Math.min( w, h );

  long mf = 100000000;
  int angle = (int)(( (first*(36000*mf/result)) +50*mf)/(100*mf)) ;
  int origin=180;
  g.fillArc(0,0,h,h, origin, (int)angle);
  g.setGrayScale(13*16);
  g.fillArc(0,0,h,h, (int)(origin+angle), (int)(360-angle) );
  
  g.setColor(123);
  g.drawString("A = "+first+"  ", h/2, h/2-10, Graphics.BASELINE|Graphics.RIGHT);
  g.drawString("  B = "+second, h/2, h/2-10, Graphics.BASELINE|Graphics.LEFT);
  g.drawString("Total = "+(first+second), h/2, h/2, Graphics.TOP|Graphics.HCENTER);

  }

  public void commandAction( Command c, Displayable d){
  current=form;
  display.setCurrent(form);
  }
  }
} 

Download Source Code