Mega Code Archive

 
Categories / Java / J2ME
 

Image MIDlet

/* J2ME in a Nutshell By Kim Topley ISBN: 0-596-00253-X */ import java.io.IOException; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Font; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.List; import javax.microedition.midlet.MIDlet; public class ImageMIDlet extends MIDlet implements CommandListener {     // The MIDlet's Display object     private Display display;              // Flag indicating first call of startApp     protected boolean started;          // Exit command     private Command exitCommand;          // Back to examples list command     private Command backCommand;          // The example selection list     private List examplesList;          // The Canvases used to demonstrate different Items     private Canvas[] canvases;          // The example names. Used to populate the list.     private String[] examples = {         "DrawImage", "ImageGraphics"     };     protected void startApp() {         if (!started) {             started = true;             display = Display.getDisplay(this);                          // Create the common commands             createCommands();                          // Create the canvases             createCanvases();                          // Create the list of examples             createList();                          // Start with the List             display.setCurrent(examplesList);         }     }     protected void pauseApp() {     }     protected void destroyApp(boolean unconditional) {     }     public void commandAction(Command c, Displayable d) {         if (d == examplesList) {             // New example selected             int index = examplesList.getSelectedIndex();             display.setCurrent(canvases[index]);         } else if (c == exitCommand) {             // Exit. No need to call destroyApp             // because it is empty.             notifyDestroyed();         } else if (c == backCommand) {             // Go back to main selection list             display.setCurrent(examplesList);         }     }          private void createCommands() {         exitCommand = new Command("Exit", Command.EXIT, 0);         backCommand = new Command("Back", Command.BACK, 1);     }          private void createList() {         examplesList = new List("Select Example", List.IMPLICIT);         for (int i = 0; i < examples.length; i++) {             examplesList.append(examples[i], null);         }          examplesList.setCommandListener(this);     }          private void createCanvases() {         canvases = new Canvas[examples.length];         canvases[0] = createDrawImageCanvas();         canvases[1] = createImageGraphicsCanvas();     }     private void addCommands(Displayable d) {         d.addCommand(exitCommand);         d.addCommand(backCommand);         d.setCommandListener(this);     }          // Create the Canvas for the image drawing example     private Canvas createDrawImageCanvas() {         Canvas canvas = new DrawImageCanvas();                 addCommands(canvas);         return canvas;     }           // Create the Canvas to demonstrate drawing to an Image     private Canvas createImageGraphicsCanvas() {         Canvas canvas = new ImageGraphicsCanvas();                 addCommands(canvas);         return canvas;     }  } // A canvas that illustrates image drawing class DrawImageCanvas extends Canvas {     static Image image;          int count;          public void paint(Graphics g) {         int width = getWidth();         int height = getHeight();         // Fill the background using black         g.setColor(0);         g.fillRect(0, 0, width, height);                  // Load an image from the MIDlet resources         if (image == null) {             try {                 image = Image.createImage("/earth.png");             } catch (IOException ex) {                 g.setColor(0xffffff);                 g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);                 return;             }         }                  switch (count % 3) {         case 0:             // Draw the image at the top left of the screen             g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);             break;         case 1:             // Draw it in the bottom right corner             g.drawImage(image, width, height, Graphics.BOTTOM | Graphics.RIGHT);             break;         case 2:             // Draw it in the center             g.drawImage(image, width/2, height/2, Graphics.VCENTER | Graphics.HCENTER);         }         count++;     } } // A canvas that illustrates drawing on an Image class ImageGraphicsCanvas extends Canvas {          public void paint(Graphics g) {         int width = getWidth();         int height = getHeight();         // Create an Image the same size as the         // Canvas.         Image image = Image.createImage(width, height);         Graphics imageGraphics = image.getGraphics();         // Fill the background of the image black         imageGraphics.fillRect(0, 0, width, height);         // Draw a pattern of lines         int count = 10;         int yIncrement = height/count;         int xIncrement = width/count;         for (int i = 0, x = xIncrement, y = 0; i < count; i++) {             imageGraphics.setColor(0xC0 + ((128 + 10 * i) << 8) + ((128 + 10 * i) << 16));             imageGraphics.drawLine(0, y, x, height);             y += yIncrement;             x += xIncrement;         }         // Add some text         imageGraphics.setFont(Font.getFont(Font.FACE_PROPORTIONAL,                                 Font.STYLE_UNDERLINED, Font.SIZE_SMALL));         imageGraphics.setColor(0xffff00);         imageGraphics.drawString("Image Graphics", width/2, 0, Graphics.TOP | Graphics.HCENTER);         // Copy the Image to the screen         g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);     } }