Mega Code Archive

 
Categories / Java / J2ME
 

Simple Canvas

/* Title:  J2ME Games With MIDP2 Authors:  Carol Hamer Publisher:  Apress ISBN:   1590593820 */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /**  * This is the main class of the hello world demo.  *  * @author Carol Hamer  */ public class Hello extends MIDlet implements CommandListener {   /**    * The canvas is the region of the screen that has been allotted     * to the game.    */   HelloCanvas myCanvas;   /**    * The Command objects appear as buttons in this example.    */   private Command exitCommand = new Command("Exit", Command.EXIT, 99);   /**    * The Command objects appear as buttons in this example.    */   private Command toggleCommand = new Command("Toggle Msg", Command.SCREEN, 1);   /**    * Initialize the canvas and the commands.    */   public Hello() {     myCanvas = new HelloCanvas();     myCanvas.addCommand(exitCommand);     myCanvas.addCommand(toggleCommand);     // we set one command listener to listen to all      // of the commands on the canvas:     myCanvas.setCommandListener(this);   }   //----------------------------------------------------------------   //  implementation of MIDlet   /**    * Start the application.    */   public void startApp() throws MIDletStateChangeException {     // display my canvas on the screen:     Display.getDisplay(this).setCurrent(myCanvas);     myCanvas.repaint();   }      /**    * If the MIDlet was using resources, it should release     * them in this method.    */   public void destroyApp(boolean unconditional)        throws MIDletStateChangeException {   }   /**    * This method is called to notify the MIDlet to enter a paused     * state.  The MIDlet should use this opportunity to release     * shared resources.    */   public void pauseApp() {   }   //----------------------------------------------------------------   //  implementation of CommandListener   /*    * Respond to a command issued on the Canvas.    * (either reset or exit).    */   public void commandAction(Command c, Displayable s) {     if(c == toggleCommand) {       myCanvas.toggleHello();     } else if(c == exitCommand) {       try {   destroyApp(false);   notifyDestroyed();       } catch (MIDletStateChangeException ex) {       }     }   }    } /**  * This class represents the region of the screen that has been allotted   * to the game.  *   * @author Carol Hamer  */ class HelloCanvas extends Canvas {   //---------------------------------------------------------   //   fields   /**    * whether or not the screen should currently display the     * "hello world" message.    */   boolean mySayHello = true;   //-----------------------------------------------------   //    initialization and game state changes   /**    * toggle the hello message.    */   void toggleHello() {     mySayHello = !mySayHello;     repaint();   }   //-------------------------------------------------------   //  graphics methods   /**    * clear the screen and display the hello world message if appropriate.    */   public void paint(Graphics g) {     // get the dimensions of the screen:     int width = getWidth();     int height = getHeight();     // clear the screen (paint it white):     g.setColor(0xffffff);     // The first two args give the coordinates of the top      // left corner of the rectangle.  (0,0) corresponds      // to the top left corner of the screen.     g.fillRect(0, 0, width, height);     // display the hello world message if appropriate:.     if(mySayHello) {       Font font = g.getFont();       int fontHeight = font.getHeight();       int fontWidth = font.stringWidth("Hello World!");       // set the text color to red:       g.setColor(255, 0, 0);       g.setFont(font);       // write the string in the center of the screen       g.drawString("Hello World!", (width - fontWidth)/2,         (height - fontHeight)/2,        g.TOP|g.LEFT);     }   } }