<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJ2ME%2FKey_Event</id>
		<title>Java/J2ME/Key Event - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJ2ME%2FKey_Event"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/J2ME/Key_Event&amp;action=history"/>
		<updated>2026-04-21T20:26:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/J2ME/Key_Event&amp;diff=7287&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/J2ME/Key_Event&amp;diff=7287&amp;oldid=prev"/>
				<updated>2010-06-01T06:38:02Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:38, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/J2ME/Key_Event&amp;diff=7286&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/J2ME/Key_Event&amp;diff=7286&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Canvas for processing game actions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
* GameActions.java&lt;br /&gt;
*&lt;br /&gt;
* Canvas for processing game actions&lt;br /&gt;
*&lt;br /&gt;
* Example from the book:     Core J2ME Technology&lt;br /&gt;
* Copyright John W. Muchow   http://www.CoreJ2ME.ru&lt;br /&gt;
* You may use/modify for any non-commercial purpose&lt;br /&gt;
*-------------------------------------------------*/  &lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
public class GameActions extends MIDlet&lt;br /&gt;
{&lt;br /&gt;
  private Display  display;       // The display&lt;br /&gt;
  private GameActionCanvas canvas;   // Canvas &lt;br /&gt;
 &lt;br /&gt;
  public GameActions()&lt;br /&gt;
  {&lt;br /&gt;
    display = Display.getDisplay(this);&lt;br /&gt;
    canvas  = new GameActionCanvas(this);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  protected void startApp()&lt;br /&gt;
  {&lt;br /&gt;
    display.setCurrent( canvas );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  protected void pauseApp()&lt;br /&gt;
  { }&lt;br /&gt;
  protected void destroyApp( boolean unconditional )&lt;br /&gt;
  { }&lt;br /&gt;
 &lt;br /&gt;
  public void exitMIDlet()&lt;br /&gt;
  {&lt;br /&gt;
    destroyApp(true);&lt;br /&gt;
    notifyDestroyed();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
* GameActionCanvas.java&lt;br /&gt;
*&lt;br /&gt;
* Game action event handling&lt;br /&gt;
*-------------------------------------------------*/&lt;br /&gt;
class GameActionCanvas extends Canvas implements CommandListener&lt;br /&gt;
{&lt;br /&gt;
  private Command cmExit;          // Exit midlet&lt;br /&gt;
  private String keyText = null;    // Key code text&lt;br /&gt;
  private GameActions midlet;&lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Constructor&lt;br /&gt;
  *-------------------------------------------------*/&lt;br /&gt;
  public GameActionCanvas(GameActions midlet)&lt;br /&gt;
  {&lt;br /&gt;
    this.midlet = midlet;&lt;br /&gt;
    &lt;br /&gt;
    // Create exit command &amp;amp; listen for events&lt;br /&gt;
    cmExit = new Command(&amp;quot;Exit&amp;quot;, Command.EXIT, 1);&lt;br /&gt;
    addCommand(cmExit);&lt;br /&gt;
    setCommandListener(this);&lt;br /&gt;
  } &lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Paint the text representing the key code &lt;br /&gt;
  *-------------------------------------------------*/&lt;br /&gt;
  protected void paint(Graphics g)&lt;br /&gt;
  {&lt;br /&gt;
    // Clear the background (to white)&lt;br /&gt;
    g.setColor(255, 255, 255);&lt;br /&gt;
    g.fillRect(0, 0, getWidth(), getHeight());&lt;br /&gt;
    &lt;br /&gt;
    // Set color and draw text&lt;br /&gt;
    if (keyText != null)&lt;br /&gt;
    {&lt;br /&gt;
      // Draw with black pen&lt;br /&gt;
      g.setColor(0, 0, 0);&lt;br /&gt;
      // Center the text&lt;br /&gt;
      g.drawString(keyText, getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Command event handling&lt;br /&gt;
  *-------------------------------------------------*/  &lt;br /&gt;
  public void commandAction(Command c, Displayable d)&lt;br /&gt;
  {&lt;br /&gt;
    if (c == cmExit)&lt;br /&gt;
      midlet.exitMIDlet();&lt;br /&gt;
  }&lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Game action event handling&lt;br /&gt;
  * A game action will be converted into a key code &lt;br /&gt;
  * and handed off to this method&lt;br /&gt;
  *-------------------------------------------------*/  &lt;br /&gt;
  protected void keyPressed(int keyCode)&lt;br /&gt;
  {&lt;br /&gt;
    switch (getGameAction(keyCode))&lt;br /&gt;
    {&lt;br /&gt;
      // Place logic of each action inside the case&lt;br /&gt;
      case FIRE:&lt;br /&gt;
      case UP: &lt;br /&gt;
      case DOWN:&lt;br /&gt;
      case LEFT:&lt;br /&gt;
      case RIGHT:&lt;br /&gt;
      case GAME_A:&lt;br /&gt;
      case GAME_B:&lt;br /&gt;
      case GAME_C:&lt;br /&gt;
      case GAME_D:&lt;br /&gt;
      default:&lt;br /&gt;
        // Print the text of the game action&lt;br /&gt;
        keyText = getKeyName(keyCode);&lt;br /&gt;
    }        &lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Canvas for processing key code and commands ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
* KeyCodes.java&lt;br /&gt;
*&lt;br /&gt;
* Canvas for processing key code and commands&lt;br /&gt;
*&lt;br /&gt;
* Example from the book:     Core J2ME Technology&lt;br /&gt;
* Copyright John W. Muchow   http://www.CoreJ2ME.ru&lt;br /&gt;
* You may use/modify for any non-commercial purpose&lt;br /&gt;
*-------------------------------------------------*/  &lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
public class KeyCodes extends MIDlet&lt;br /&gt;
{&lt;br /&gt;
  private Display  display;       // The display&lt;br /&gt;
  private KeyCodeCanvas canvas;   // Canvas &lt;br /&gt;
 &lt;br /&gt;
  public KeyCodes()&lt;br /&gt;
  {&lt;br /&gt;
    display = Display.getDisplay(this);&lt;br /&gt;
    canvas  = new KeyCodeCanvas(this);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  protected void startApp()&lt;br /&gt;
  {&lt;br /&gt;
    display.setCurrent( canvas );&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  protected void pauseApp()&lt;br /&gt;
  { }&lt;br /&gt;
  protected void destroyApp( boolean unconditional )&lt;br /&gt;
  { }&lt;br /&gt;
 &lt;br /&gt;
  public void exitMIDlet()&lt;br /&gt;
  {&lt;br /&gt;
    destroyApp(true);&lt;br /&gt;
    notifyDestroyed();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*--------------------------------------------------&lt;br /&gt;
* Class KeyCodeCanvas&lt;br /&gt;
*&lt;br /&gt;
* Key codes and commands for event handling&lt;br /&gt;
*-------------------------------------------------*/&lt;br /&gt;
class KeyCodeCanvas extends Canvas implements CommandListener&lt;br /&gt;
{&lt;br /&gt;
  private Command cmExit;          // Exit midlet&lt;br /&gt;
  private String keyText = null;    // Key code text&lt;br /&gt;
  private KeyCodes midlet;&lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Constructor&lt;br /&gt;
  *-------------------------------------------------*/&lt;br /&gt;
  public KeyCodeCanvas(KeyCodes midlet)&lt;br /&gt;
  {&lt;br /&gt;
    this.midlet = midlet;&lt;br /&gt;
    &lt;br /&gt;
    // Create exit command &amp;amp; listen for events&lt;br /&gt;
    cmExit = new Command(&amp;quot;Exit&amp;quot;, Command.EXIT, 1);&lt;br /&gt;
    addCommand(cmExit);&lt;br /&gt;
    setCommandListener(this);&lt;br /&gt;
  } &lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Paint the text representing the key code &lt;br /&gt;
  *-------------------------------------------------*/&lt;br /&gt;
  protected void paint(Graphics g)&lt;br /&gt;
  {&lt;br /&gt;
    // Clear the background (to white)&lt;br /&gt;
    g.setColor(255, 255, 255);&lt;br /&gt;
    g.fillRect(0, 0, getWidth(), getHeight());&lt;br /&gt;
    &lt;br /&gt;
    // Set color and draw text&lt;br /&gt;
    if (keyText != null)&lt;br /&gt;
    {&lt;br /&gt;
      // Draw with black pen&lt;br /&gt;
      g.setColor(0, 0, 0);&lt;br /&gt;
      // Close to the center      &lt;br /&gt;
      g.drawString(keyText, getWidth()/2, getHeight()/2, Graphics.TOP | Graphics.HCENTER);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Command event handling&lt;br /&gt;
  *-------------------------------------------------*/  &lt;br /&gt;
  public void commandAction(Command c, Displayable d)&lt;br /&gt;
  {&lt;br /&gt;
    if (c == cmExit)&lt;br /&gt;
      midlet.exitMIDlet();&lt;br /&gt;
  }&lt;br /&gt;
  /*--------------------------------------------------&lt;br /&gt;
  * Key code event handling&lt;br /&gt;
  *-------------------------------------------------*/  &lt;br /&gt;
  protected void keyPressed(int keyCode)&lt;br /&gt;
  {&lt;br /&gt;
    keyText = getKeyName(keyCode);&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Event Example 1 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* License&lt;br /&gt;
 * &lt;br /&gt;
 * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *  &lt;br /&gt;
 *  * Redistribution of source code must retain the above copyright notice,&lt;br /&gt;
 *      this list of conditions and the following disclaimer.&lt;br /&gt;
 * &lt;br /&gt;
 *  * Redistribution in binary form must reproduce the above copyright notice,&lt;br /&gt;
 *      this list of conditions and the following disclaimer in the&lt;br /&gt;
 *      documentation and/or other materials provided with the distribution.&lt;br /&gt;
 * &lt;br /&gt;
 * Neither the name of Sun Microsystems, Inc. or the names of contributors&lt;br /&gt;
 * may be used to endorse or promote products derived from this software&lt;br /&gt;
 * without specific prior written permission.&lt;br /&gt;
 *  &lt;br /&gt;
 * This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind. ALL&lt;br /&gt;
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING&lt;br /&gt;
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE&lt;br /&gt;
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. (&amp;quot;SUN&amp;quot;)&lt;br /&gt;
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE&lt;br /&gt;
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS&lt;br /&gt;
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST&lt;br /&gt;
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,&lt;br /&gt;
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY&lt;br /&gt;
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,&lt;br /&gt;
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
 *  &lt;br /&gt;
 * You acknowledge that this software is not designed, licensed or intended&lt;br /&gt;
 * for use in the design, construction, operation or maintenance of any&lt;br /&gt;
 * nuclear facility. &lt;br /&gt;
 */&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
public class EventEx1 extends MIDlet implements CommandListener {&lt;br /&gt;
    // display manager&lt;br /&gt;
    Display display = null;&lt;br /&gt;
    &lt;br /&gt;
    // a menu with items&lt;br /&gt;
    List menu = null; // main menu&lt;br /&gt;
    // textbox&lt;br /&gt;
    TextBox input = null;&lt;br /&gt;
    // command&lt;br /&gt;
    static final Command backCommand = new Command(&amp;quot;Back&amp;quot;, Command.BACK, 0);&lt;br /&gt;
    static final Command mainMenuCommand = new Command(&amp;quot;Main&amp;quot;, Command.SCREEN, 1);&lt;br /&gt;
    static final Command exitCommand = new Command(&amp;quot;Exit&amp;quot;, Command.STOP, 2);&lt;br /&gt;
    String currentMenu = null;&lt;br /&gt;
    // constructor.&lt;br /&gt;
    public EventEx1() {&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Start the MIDlet by creating a list of items and associating the&lt;br /&gt;
     * exit command with it.&lt;br /&gt;
     */&lt;br /&gt;
    public void startApp() throws MIDletStateChangeException {&lt;br /&gt;
      display = Display.getDisplay(this);&lt;br /&gt;
      menu = new List(&amp;quot;Menu Items&amp;quot;, Choice.IMPLICIT);&lt;br /&gt;
      menu.append(&amp;quot;Item1&amp;quot;, null);&lt;br /&gt;
      menu.append(&amp;quot;Item2&amp;quot;, null);&lt;br /&gt;
      menu.append(&amp;quot;Item3&amp;quot;, null);&lt;br /&gt;
      menu.append(&amp;quot;Item4&amp;quot;, null);&lt;br /&gt;
      menu.addCommand(exitCommand);&lt;br /&gt;
      menu.setCommandListener(this);&lt;br /&gt;
      mainMenu();&lt;br /&gt;
    }&lt;br /&gt;
    public void pauseApp() {&lt;br /&gt;
      display = null;&lt;br /&gt;
      menu = null;&lt;br /&gt;
      input = null;&lt;br /&gt;
    }&lt;br /&gt;
    public void destroyApp(boolean unconditional) {&lt;br /&gt;
      notifyDestroyed();&lt;br /&gt;
    }&lt;br /&gt;
    // main menu&lt;br /&gt;
    void mainMenu() {&lt;br /&gt;
      display.setCurrent(menu);&lt;br /&gt;
      currentMenu = &amp;quot;Main&amp;quot;; &lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * a generic method that will be called when selected any of&lt;br /&gt;
     * the items on the list.&lt;br /&gt;
     */&lt;br /&gt;
    public void prepare() {&lt;br /&gt;
       input = new TextBox(&amp;quot;Enter some text: &amp;quot;, &amp;quot;&amp;quot;, 5, TextField.ANY);&lt;br /&gt;
       input.addCommand(backCommand);&lt;br /&gt;
       input.setCommandListener(this);&lt;br /&gt;
       input.setString(&amp;quot;&amp;quot;);&lt;br /&gt;
       display.setCurrent(input);&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Test item1.&lt;br /&gt;
     */&lt;br /&gt;
    public void testItem1() {&lt;br /&gt;
      prepare();&lt;br /&gt;
      currentMenu = &amp;quot;item1&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    /**&lt;br /&gt;
     * Test item2.&lt;br /&gt;
     */&lt;br /&gt;
    public void testItem2() {&lt;br /&gt;
       prepare();&lt;br /&gt;
       currentMenu = &amp;quot;item2&amp;quot;; &lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Test item3.&lt;br /&gt;
     */&lt;br /&gt;
    public void testItem3() {&lt;br /&gt;
       prepare();&lt;br /&gt;
       currentMenu = &amp;quot;item3&amp;quot;; &lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * Test item4.&lt;br /&gt;
     */&lt;br /&gt;
    public void testItem4() {&lt;br /&gt;
       prepare();&lt;br /&gt;
       currentMenu = &amp;quot;item4&amp;quot;; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * Handle events.&lt;br /&gt;
    */  &lt;br /&gt;
   public void commandAction(Command c, Displayable d) {&lt;br /&gt;
      String label = c.getLabel();&lt;br /&gt;
      if (label.equals(&amp;quot;Exit&amp;quot;)) {&lt;br /&gt;
         destroyApp(true);&lt;br /&gt;
      } else if (label.equals(&amp;quot;Back&amp;quot;)) {&lt;br /&gt;
          if(currentMenu.equals(&amp;quot;item1&amp;quot;) || currentMenu.equals(&amp;quot;item2&amp;quot;) ||&lt;br /&gt;
             currentMenu.equals(&amp;quot;item3&amp;quot;) || currentMenu.equals(&amp;quot;item4&amp;quot;))  {&lt;br /&gt;
            // go back to menu&lt;br /&gt;
            mainMenu();&lt;br /&gt;
          } &lt;br /&gt;
      } else {&lt;br /&gt;
         List down = (List)display.getCurrent();&lt;br /&gt;
         switch(down.getSelectedIndex()) {&lt;br /&gt;
           case 0: testItem1();break;&lt;br /&gt;
           case 1: testItem2();break;&lt;br /&gt;
           case 2: testItem3();break;&lt;br /&gt;
           case 3: testItem4();break;&lt;br /&gt;
         }&lt;br /&gt;
            &lt;br /&gt;
      }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Event Example 2 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
public class EventEx2 extends MIDlet {&lt;br /&gt;
   Display display;&lt;br /&gt;
   public EventEx2() {&lt;br /&gt;
      display = Display.getDisplay(this);&lt;br /&gt;
   }&lt;br /&gt;
   public void destroyApp (boolean unconditional) {&lt;br /&gt;
      notifyDestroyed();&lt;br /&gt;
      System.out.println(&amp;quot;App destroyed &amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
   public void pauseApp () {&lt;br /&gt;
      display = null;&lt;br /&gt;
      System.out.println(&amp;quot;App paused.&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
   public void startApp () {&lt;br /&gt;
      Form form = new Form(&amp;quot;Change Date&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
      ItemStateListener listener = new ItemStateListener() {&lt;br /&gt;
         java.util.Calendar cal = &lt;br /&gt;
           java.util.Calendar.getInstance(java.util.TimeZone.getDefault());&lt;br /&gt;
         public void itemStateChanged(Item item) {&lt;br /&gt;
            cal.setTime(((DateField)item).getDate());&lt;br /&gt;
            System.out.println(&amp;quot;\nDate has changed&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
      };&lt;br /&gt;
      form.setItemStateListener(listener);&lt;br /&gt;
        &lt;br /&gt;
      java.util.Date now = new java.util.Date();&lt;br /&gt;
      DateField dateItem = new DateField(&amp;quot;Today&amp;quot;s date:&amp;quot;, DateField.DATE);&lt;br /&gt;
      dateItem.setDate(now);&lt;br /&gt;
      form.append(dateItem);&lt;br /&gt;
      display.setCurrent(form);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Game Key Event ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
J2ME in a Nutshell&lt;br /&gt;
By Kim Topley&lt;br /&gt;
ISBN: 0-596-00253-X&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
import javax.microedition.lcdui.Canvas;&lt;br /&gt;
import javax.microedition.lcdui.rumand;&lt;br /&gt;
import javax.microedition.lcdui.rumandListener;&lt;br /&gt;
import javax.microedition.lcdui.Display;&lt;br /&gt;
import javax.microedition.lcdui.Displayable;&lt;br /&gt;
import javax.microedition.lcdui.Graphics;&lt;br /&gt;
import javax.microedition.midlet.MIDlet;&lt;br /&gt;
public class EventsMIDlet extends MIDlet &lt;br /&gt;
                        implements CommandListener {&lt;br /&gt;
    // The MIDlet&amp;quot;s Display object&lt;br /&gt;
    private Display display;&lt;br /&gt;
        &lt;br /&gt;
    // Flag indicating first call of startApp&lt;br /&gt;
    protected boolean started;&lt;br /&gt;
    &lt;br /&gt;
    // Exit command&lt;br /&gt;
    private Command exitCommand;&lt;br /&gt;
    &lt;br /&gt;
    protected void startApp() {&lt;br /&gt;
        if (!started) {&lt;br /&gt;
            display = Display.getDisplay(this);&lt;br /&gt;
            Canvas canvas = new EventsCanvas();            &lt;br /&gt;
            exitCommand = new Command(&amp;quot;Exit&amp;quot;, Command.EXIT, 0);&lt;br /&gt;
            canvas.addCommand(exitCommand);&lt;br /&gt;
            canvas.setCommandListener(this);&lt;br /&gt;
            display.setCurrent(canvas);&lt;br /&gt;
            &lt;br /&gt;
            started = true;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    protected void pauseApp() {&lt;br /&gt;
    }&lt;br /&gt;
    protected void destroyApp(boolean unconditional) {&lt;br /&gt;
    }&lt;br /&gt;
    public void commandAction(Command c, Displayable d) {&lt;br /&gt;
        if (c == exitCommand) {&lt;br /&gt;
            // Exit. No need to call destroyApp&lt;br /&gt;
            // because it is empty.&lt;br /&gt;
            notifyDestroyed();&lt;br /&gt;
        }&lt;br /&gt;
    }     &lt;br /&gt;
}&lt;br /&gt;
class EventsCanvas extends Canvas {&lt;br /&gt;
    &lt;br /&gt;
    static int[] keyCodes = {KEY_NUM0, KEY_NUM1, KEY_NUM2, KEY_NUM3, KEY_NUM4,&lt;br /&gt;
                             KEY_NUM5, KEY_NUM6, KEY_NUM7, KEY_NUM8, KEY_NUM9,&lt;br /&gt;
                             KEY_POUND, KEY_STAR};&lt;br /&gt;
    static String[] keyNames = {&amp;quot;KEY_NUM0&amp;quot;, &amp;quot;KEY_NUM1&amp;quot;, &amp;quot;KEY_NUM2&amp;quot;, &amp;quot;KEY_NUM3&amp;quot;, &amp;quot;KEY_NUM4&amp;quot;,&lt;br /&gt;
                             &amp;quot;KEY_NUM5&amp;quot;, &amp;quot;KEY_NUM6&amp;quot;, &amp;quot;KEY_NUM7&amp;quot;, &amp;quot;KEY_NUM8&amp;quot;, &amp;quot;KEY_NUM9&amp;quot;,&lt;br /&gt;
                             &amp;quot;KEY_POUND&amp;quot;, &amp;quot;KEY_STAR&amp;quot;};&lt;br /&gt;
                             &lt;br /&gt;
    static int[] gameActions = {&lt;br /&gt;
                            UP, DOWN, LEFT, RIGHT, FIRE,&lt;br /&gt;
                            GAME_A, GAME_B, GAME_C, GAME_D};&lt;br /&gt;
    static String[] gameNames = {&lt;br /&gt;
                            &amp;quot;UP&amp;quot;, &amp;quot;DOWN&amp;quot;, &amp;quot;LEFT&amp;quot;, &amp;quot;RIGHT&amp;quot;, &amp;quot;FIRE&amp;quot;,&lt;br /&gt;
                            &amp;quot;GAME_A&amp;quot;, &amp;quot;GAME_B&amp;quot;, &amp;quot;GAME_C&amp;quot;, &amp;quot;GAME_D&amp;quot; };&lt;br /&gt;
    &lt;br /&gt;
    int lastKeyCode = 0;&lt;br /&gt;
    &lt;br /&gt;
    int lastX;&lt;br /&gt;
    &lt;br /&gt;
    int lastY;&lt;br /&gt;
    &lt;br /&gt;
    boolean pointer;&lt;br /&gt;
    protected void keyPressed(int keyCode) {&lt;br /&gt;
        lastKeyCode = keyCode;&lt;br /&gt;
        repaint();&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    protected void keyRepeated(int keyCode) {&lt;br /&gt;
        lastKeyCode = keyCode;&lt;br /&gt;
        repaint();&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    protected void keyReleased(int keyCode) {&lt;br /&gt;
        lastKeyCode = 0;&lt;br /&gt;
        repaint();&lt;br /&gt;
    }    &lt;br /&gt;
    protected void pointerPressed(int x, int y) {&lt;br /&gt;
        lastX = x;&lt;br /&gt;
        lastY = y;&lt;br /&gt;
        pointer = true;&lt;br /&gt;
        repaint();&lt;br /&gt;
    }&lt;br /&gt;
        &lt;br /&gt;
    protected void pointerDragged(int x, int y) {&lt;br /&gt;
        lastX = x;&lt;br /&gt;
        lastY = y;&lt;br /&gt;
        pointer = true;&lt;br /&gt;
        repaint();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void pointerReleased(int x, int y) {&lt;br /&gt;
        pointer = false;&lt;br /&gt;
        repaint();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void paint(Graphics g) {&lt;br /&gt;
        g.setColor(0xffffff);&lt;br /&gt;
        g.fillRect(0, 0, getWidth(), getHeight());&lt;br /&gt;
        &lt;br /&gt;
        g.setColor(0);&lt;br /&gt;
        if (lastKeyCode != 0) {&lt;br /&gt;
            String keyText = &amp;quot;keyCode &amp;quot; + lastKeyCode;&lt;br /&gt;
            String keyName = null;&lt;br /&gt;
            // See if it is a standard key&lt;br /&gt;
            for (int i = 0; i &amp;lt; keyCodes.length; i++) {&lt;br /&gt;
                if (lastKeyCode == keyCodes[i]) {&lt;br /&gt;
                    keyName = keyNames[i];&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }   &lt;br /&gt;
            &lt;br /&gt;
            if (keyName == null) {&lt;br /&gt;
                // See if it is a game action&lt;br /&gt;
                for (int i = 0; i &amp;lt; gameActions.length; i++) {&lt;br /&gt;
                    if (lastKeyCode == getKeyCode(gameActions[i])) {&lt;br /&gt;
                        keyName = gameNames[i];&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            g.drawString(keyText, getWidth()/2, getHeight()/2, &lt;br /&gt;
                            Graphics.BASELINE|Graphics.HCENTER);&lt;br /&gt;
                    &lt;br /&gt;
            if (keyName != null) {&lt;br /&gt;
                g.drawString(keyName, getWidth()/2, getHeight()/2 + g.getFont().getHeight(), &lt;br /&gt;
                            Graphics.BASELINE|Graphics.HCENTER);    &lt;br /&gt;
            }&lt;br /&gt;
        } else if (pointer) {&lt;br /&gt;
            g.drawString(&amp;quot;(&amp;quot; + lastX + &amp;quot;, &amp;quot; + lastY + &amp;quot;)&amp;quot;, getWidth()/2, getHeight()/2, &lt;br /&gt;
                            Graphics.BASELINE|Graphics.HCENTER);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Key Event Demo ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * @(#)Tiles.java 1.6 00/05/24 Copyright (c) 2000 Sun Microsystems, Inc. All&lt;br /&gt;
 * Rights Reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * This software is the confidential and proprietary information of Sun&lt;br /&gt;
 * Microsystems, Inc. (&amp;quot;Confidential Information&amp;quot;). You shall not disclose such&lt;br /&gt;
 * Confidential Information and shall use it only in accordance with the terms&lt;br /&gt;
 * of the license agreement you entered into with Sun.&lt;br /&gt;
 * &lt;br /&gt;
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE&lt;br /&gt;
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED&lt;br /&gt;
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR&lt;br /&gt;
 * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY&lt;br /&gt;
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS&lt;br /&gt;
 * DERIVATIVES.&lt;br /&gt;
 */&lt;br /&gt;
import javax.microedition.lcdui.Canvas;&lt;br /&gt;
import javax.microedition.lcdui.rumand;&lt;br /&gt;
import javax.microedition.lcdui.rumandListener;&lt;br /&gt;
import javax.microedition.lcdui.Display;&lt;br /&gt;
import javax.microedition.lcdui.Displayable;&lt;br /&gt;
import javax.microedition.lcdui.Font;&lt;br /&gt;
import javax.microedition.lcdui.Graphics;&lt;br /&gt;
import javax.microedition.midlet.MIDlet;&lt;br /&gt;
public class Tiles extends MIDlet {&lt;br /&gt;
  Board b;&lt;br /&gt;
  public Tiles() {&lt;br /&gt;
    b = new Board(this);&lt;br /&gt;
  }&lt;br /&gt;
  public void startApp() {&lt;br /&gt;
    Display.getDisplay(this).setCurrent(b);&lt;br /&gt;
  }&lt;br /&gt;
  public void pauseApp() {&lt;br /&gt;
  }&lt;br /&gt;
  public void destroyApp(boolean unconditional) {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
 * @(#)Board.java 1.14 00/05/23 Copyright (c) 2000 Sun Microsystems, Inc. All&lt;br /&gt;
 * Rights Reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * This software is the confidential and proprietary information of Sun&lt;br /&gt;
 * Microsystems, Inc. (&amp;quot;Confidential Information&amp;quot;). You shall not disclose such&lt;br /&gt;
 * Confidential Information and shall use it only in accordance with the terms&lt;br /&gt;
 * of the license agreement you entered into with Sun.&lt;br /&gt;
 * &lt;br /&gt;
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE&lt;br /&gt;
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED&lt;br /&gt;
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR&lt;br /&gt;
 * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY&lt;br /&gt;
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS&lt;br /&gt;
 * DERIVATIVES.&lt;br /&gt;
 */&lt;br /&gt;
class Board extends Canvas implements CommandListener {&lt;br /&gt;
  MIDlet midlet;&lt;br /&gt;
  Command exitCommand;&lt;br /&gt;
  Font font;&lt;br /&gt;
  // Character Position&lt;br /&gt;
  int xPos, yPos;&lt;br /&gt;
  // Chracter Height and Width in pixels&lt;br /&gt;
  int charW, charH;&lt;br /&gt;
  public Board(MIDlet midlet_) {&lt;br /&gt;
    int i;&lt;br /&gt;
    midlet = midlet_;&lt;br /&gt;
    Display dpy = Display.getDisplay(midlet);&lt;br /&gt;
    int letterWidth = 4;&lt;br /&gt;
    font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,&lt;br /&gt;
        Font.SIZE_MEDIUM);&lt;br /&gt;
    charW = font.charWidth(&amp;quot;M&amp;quot;) + 7;&lt;br /&gt;
    charH = font.getHeight() + 1;&lt;br /&gt;
    xPos = (getWidth() - (letterWidth * charW) + 1) / 2;&lt;br /&gt;
    yPos = 1;&lt;br /&gt;
    exitCommand = new Command(&amp;quot;Exit&amp;quot;, Command.SCREEN, 2);&lt;br /&gt;
    addCommand(exitCommand);&lt;br /&gt;
    setCommandListener(this);&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
  public void commandAction(Command c, Displayable d) {&lt;br /&gt;
    if (c == exitCommand) {&lt;br /&gt;
      midlet.notifyDestroyed();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    g.setColor(0);&lt;br /&gt;
    g.drawRect(4, 4, 4 * charW + 2, 4 * charH + 2);&lt;br /&gt;
  }&lt;br /&gt;
  public void keyPressed(int code) {&lt;br /&gt;
    int game = getGameAction(code);&lt;br /&gt;
    switch (game) {&lt;br /&gt;
    case Canvas.UP:&lt;br /&gt;
      System.out.println(&amp;quot;Canvas.UP&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.DOWN:&lt;br /&gt;
      System.out.println(&amp;quot;Canvas.DOWN&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.LEFT:&lt;br /&gt;
      System.out.println(&amp;quot;Canvas.LEFT&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.RIGHT:&lt;br /&gt;
      System.out.println(&amp;quot;Canvas.RIGHT&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    switch (code) {&lt;br /&gt;
    case Canvas.KEY_NUM0:&lt;br /&gt;
      System.out.println(&amp;quot;Key 0&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM1:&lt;br /&gt;
      System.out.println(&amp;quot;Key 1&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM2:&lt;br /&gt;
      System.out.println(&amp;quot;Key 2&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM3:&lt;br /&gt;
      System.out.println(&amp;quot;Key 3&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM4:&lt;br /&gt;
      System.out.println(&amp;quot;Key 4&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM5:&lt;br /&gt;
      System.out.println(&amp;quot;Key 5&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM6:&lt;br /&gt;
      System.out.println(&amp;quot;Key 6&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM7:&lt;br /&gt;
      System.out.println(&amp;quot;Key 7&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM8:&lt;br /&gt;
      System.out.println(&amp;quot;Key 8&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_NUM9:&lt;br /&gt;
      System.out.println(&amp;quot;Key 9&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_STAR:&lt;br /&gt;
      System.out.println(&amp;quot;Star Key&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    case Canvas.KEY_POUND:&lt;br /&gt;
      System.out.println(&amp;quot;Pound Key&amp;quot;);&lt;br /&gt;
      break;&lt;br /&gt;
    //  default:&lt;br /&gt;
    //     System.out.println( &amp;quot;default&amp;quot; );&lt;br /&gt;
    //  return;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Key Event with Canvas ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* License&lt;br /&gt;
 * &lt;br /&gt;
 * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *  &lt;br /&gt;
 *  * Redistribution of source code must retain the above copyright notice,&lt;br /&gt;
 *      this list of conditions and the following disclaimer.&lt;br /&gt;
 * &lt;br /&gt;
 *  * Redistribution in binary form must reproduce the above copyright notice,&lt;br /&gt;
 *      this list of conditions and the following disclaimer in the&lt;br /&gt;
 *      documentation and/or other materials provided with the distribution.&lt;br /&gt;
 * &lt;br /&gt;
 * Neither the name of Sun Microsystems, Inc. or the names of contributors&lt;br /&gt;
 * may be used to endorse or promote products derived from this software&lt;br /&gt;
 * without specific prior written permission.&lt;br /&gt;
 *  &lt;br /&gt;
 * This software is provided &amp;quot;AS IS,&amp;quot; without a warranty of any kind. ALL&lt;br /&gt;
 * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING&lt;br /&gt;
 * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE&lt;br /&gt;
 * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. (&amp;quot;SUN&amp;quot;)&lt;br /&gt;
 * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE&lt;br /&gt;
 * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS&lt;br /&gt;
 * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST&lt;br /&gt;
 * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,&lt;br /&gt;
 * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY&lt;br /&gt;
 * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,&lt;br /&gt;
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.&lt;br /&gt;
 *  &lt;br /&gt;
 * You acknowledge that this software is not designed, licensed or intended&lt;br /&gt;
 * for use in the design, construction, operation or maintenance of any&lt;br /&gt;
 * nuclear facility. &lt;br /&gt;
 */&lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
&lt;br /&gt;
public class EventEx3 extends MIDlet {&lt;br /&gt;
    Display display;&lt;br /&gt;
    Command exit;&lt;br /&gt;
&lt;br /&gt;
    public EventEx3() {&lt;br /&gt;
        display = Display.getDisplay(this);&lt;br /&gt;
    }&lt;br /&gt;
    public void destroyApp (boolean unconditional) {&lt;br /&gt;
    }&lt;br /&gt;
    public void pauseApp () {&lt;br /&gt;
        System.out.println(&amp;quot;App paused.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    public void startApp () {&lt;br /&gt;
       display = Display.getDisplay(this);&lt;br /&gt;
       Canvas canvas = new Canvas() { // anonymous class     &lt;br /&gt;
         public void paint(Graphics g) {&lt;br /&gt;
         }&lt;br /&gt;
         protected void keyPressed(int keyCode) {&lt;br /&gt;
           if (keyCode &amp;gt; 0) {&lt;br /&gt;
             System.out.println(&amp;quot;keyPressed &amp;quot; +((char)keyCode));&lt;br /&gt;
           } else {&lt;br /&gt;
             System.out.println(&amp;quot;keyPressed action &amp;quot; +getGameAction(keyCode));&lt;br /&gt;
           }                  &lt;br /&gt;
         }&lt;br /&gt;
         protected void keyReleased(int keyCode) {&lt;br /&gt;
           if (keyCode &amp;gt; 0) {&lt;br /&gt;
             System.out.println(&amp;quot;keyReleased &amp;quot; +((char)keyCode));&lt;br /&gt;
           } else {&lt;br /&gt;
             System.out.println(&amp;quot;keyReleased action &amp;quot; +getGameAction(keyCode));&lt;br /&gt;
           } &lt;br /&gt;
         }&lt;br /&gt;
      }; // end of anonymous class&lt;br /&gt;
      exit = new Command(&amp;quot;Exit&amp;quot;, Command.STOP, 1);&lt;br /&gt;
      canvas.addCommand(exit);&lt;br /&gt;
      canvas.setCommandListener(new CommandListener() {&lt;br /&gt;
        public void commandAction(Command c, Displayable d) {&lt;br /&gt;
          if(c == exit) {&lt;br /&gt;
            notifyDestroyed();&lt;br /&gt;
          } else {&lt;br /&gt;
            System.out.println(&amp;quot;Saw the command: &amp;quot;+c);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
      display.setCurrent(canvas);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Key MIDlet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.microedition.lcdui.Canvas;&lt;br /&gt;
import javax.microedition.lcdui.rumand;&lt;br /&gt;
import javax.microedition.lcdui.rumandListener;&lt;br /&gt;
import javax.microedition.lcdui.Display;&lt;br /&gt;
import javax.microedition.lcdui.Displayable;&lt;br /&gt;
import javax.microedition.lcdui.Font;&lt;br /&gt;
import javax.microedition.lcdui.Graphics;&lt;br /&gt;
import javax.microedition.midlet.MIDlet;&lt;br /&gt;
public class KeyMIDlet extends MIDlet {&lt;br /&gt;
  public void startApp() {&lt;br /&gt;
    Displayable d = new KeyCanvas();&lt;br /&gt;
    d.addCommand(new Command(&amp;quot;Exit&amp;quot;, Command.EXIT, 0));&lt;br /&gt;
    d.setCommandListener(new CommandListener() {&lt;br /&gt;
      public void commandAction(Command c, Displayable s) {&lt;br /&gt;
        notifyDestroyed();&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    Display.getDisplay(this).setCurrent(d);&lt;br /&gt;
  }&lt;br /&gt;
  public void pauseApp() {&lt;br /&gt;
  }&lt;br /&gt;
  public void destroyApp(boolean unconditional) {&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class KeyCanvas extends Canvas {&lt;br /&gt;
  private Font mFont = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);&lt;br /&gt;
  private String mMessage = &amp;quot;[Press keys]&amp;quot;;&lt;br /&gt;
  public KeyCanvas() {&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    int w = getWidth();&lt;br /&gt;
    int h = getHeight();&lt;br /&gt;
    g.setGrayScale(255);&lt;br /&gt;
    g.fillRect(0, 0, w - 1, h - 1);&lt;br /&gt;
    g.setGrayScale(0);&lt;br /&gt;
    g.drawRect(0, 0, w - 1, h - 1);&lt;br /&gt;
    g.setFont(mFont);&lt;br /&gt;
    int x = w / 2;&lt;br /&gt;
    int y = h / 2;&lt;br /&gt;
    g.drawString(mMessage, x, y, Graphics.BASELINE | Graphics.HCENTER);&lt;br /&gt;
  }&lt;br /&gt;
  protected void keyPressed(int keyCode) {&lt;br /&gt;
    int gameAction = getGameAction(keyCode);&lt;br /&gt;
    switch (gameAction) {&lt;br /&gt;
    case UP:&lt;br /&gt;
      mMessage = &amp;quot;UP&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case DOWN:&lt;br /&gt;
      mMessage = &amp;quot;DOWN&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case LEFT:&lt;br /&gt;
      mMessage = &amp;quot;LEFT&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case RIGHT:&lt;br /&gt;
      mMessage = &amp;quot;RIGHT&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case FIRE:&lt;br /&gt;
      mMessage = &amp;quot;FIRE&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case GAME_A:&lt;br /&gt;
      mMessage = &amp;quot;GAME_A&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case GAME_B:&lt;br /&gt;
      mMessage = &amp;quot;GAME_B&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case GAME_C:&lt;br /&gt;
      mMessage = &amp;quot;GAME_C&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    case GAME_D:&lt;br /&gt;
      mMessage = &amp;quot;GAME_D&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      mMessage = &amp;quot;&amp;quot;;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Low-Level Display Canvas:Key Code Example  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
J2ME: The Complete Reference&lt;br /&gt;
James Keogh&lt;br /&gt;
Publisher: McGraw-Hill&lt;br /&gt;
ISBN 0072227109&lt;br /&gt;
*/&lt;br /&gt;
//jad file (please verify the jar size)&lt;br /&gt;
/*&lt;br /&gt;
MIDlet-Name: KeyCodeExample&lt;br /&gt;
MIDlet-Version: 1.0&lt;br /&gt;
MIDlet-Vendor: MyCompany&lt;br /&gt;
MIDlet-Jar-URL: KeyCodeExample.jar&lt;br /&gt;
MIDlet-1: KeyCodeExample, , KeyCodeExample&lt;br /&gt;
MicroEdition-Configuration: CLDC-1.0&lt;br /&gt;
MicroEdition-Profile: MIDP-1.0&lt;br /&gt;
MIDlet-JAR-SIZE: 100&lt;br /&gt;
*/&lt;br /&gt;
import javax.microedition.midlet.*;&lt;br /&gt;
import javax.microedition.lcdui.*;&lt;br /&gt;
public class KeyCodeExample extends MIDlet&lt;br /&gt;
{&lt;br /&gt;
  private Display  display;       &lt;br /&gt;
  private MyCanvas canvas;   &lt;br /&gt;
  public KeyCodeExample ()&lt;br /&gt;
  {&lt;br /&gt;
    display = Display.getDisplay(this);&lt;br /&gt;
    canvas  = new MyCanvas(this);&lt;br /&gt;
  }&lt;br /&gt;
  protected void startApp()&lt;br /&gt;
  {&lt;br /&gt;
    display.setCurrent(canvas);&lt;br /&gt;
  }&lt;br /&gt;
  protected void pauseApp()&lt;br /&gt;
  { &lt;br /&gt;
  }&lt;br /&gt;
  protected void destroyApp( boolean unconditional )&lt;br /&gt;
  { &lt;br /&gt;
  }&lt;br /&gt;
  public void exitMIDlet()&lt;br /&gt;
  {&lt;br /&gt;
    destroyApp(true);&lt;br /&gt;
    notifyDestroyed();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyCanvas extends Canvas implements CommandListener&lt;br /&gt;
{&lt;br /&gt;
  private Command exit;          &lt;br /&gt;
  private String direction;&lt;br /&gt;
  private KeyCodeExample keyCodeExample;&lt;br /&gt;
  public MyCanvas (KeyCodeExample keyCodeExample)&lt;br /&gt;
  {&lt;br /&gt;
    direction = &amp;quot;2=up 8=dn 4=lt 6=rt&amp;quot;;    &lt;br /&gt;
    this.keyCodeExample = keyCodeExample;&lt;br /&gt;
    exit = new Command(&amp;quot;Exit&amp;quot;, Command.EXIT, 1);&lt;br /&gt;
    addCommand(exit);&lt;br /&gt;
    setCommandListener(this);&lt;br /&gt;
  } &lt;br /&gt;
  protected void paint(Graphics graphics)&lt;br /&gt;
  {&lt;br /&gt;
    graphics.setColor(255,255,255);&lt;br /&gt;
    graphics.fillRect(0, 0, getWidth(), getHeight());&lt;br /&gt;
    graphics.setColor(255, 0, 0);&lt;br /&gt;
    graphics.drawString(direction, 0, 0, &lt;br /&gt;
                         Graphics.TOP | Graphics.LEFT);&lt;br /&gt;
  }&lt;br /&gt;
  public void commandAction(Command command, Displayable displayable)&lt;br /&gt;
  {&lt;br /&gt;
    if (command == exit)&lt;br /&gt;
    {&lt;br /&gt;
      keyCodeExample.exitMIDlet();&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
  protected void keyPressed(int key)&lt;br /&gt;
  {&lt;br /&gt;
    switch ( key ){&lt;br /&gt;
     case KEY_NUM2:&lt;br /&gt;
       direction = &amp;quot;up&amp;quot;;&lt;br /&gt;
       break;&lt;br /&gt;
     case KEY_NUM8:&lt;br /&gt;
       direction = &amp;quot;down&amp;quot;;&lt;br /&gt;
       break;&lt;br /&gt;
     case KEY_NUM4:&lt;br /&gt;
       direction = &amp;quot;left&amp;quot;;&lt;br /&gt;
       break;&lt;br /&gt;
     case KEY_NUM6:&lt;br /&gt;
       direction = &amp;quot;right&amp;quot;;&lt;br /&gt;
       break;&lt;br /&gt;
    }&lt;br /&gt;
    repaint();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>