J2ME road——J2ME实现按键效果

来源:互联网 发布:淘宝网首页茵曼 编辑:程序博客网 时间:2024/06/05 17:21

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

public class KeyEventTest extends MIDlet implements CommandListener
{

 private MyCanvas myCanvas;
 private Command quit;
 
 class MyCanvas extends Canvas
 {
  private String lastKeyName = "Hit a Key"; //name of the last key they hit
  private int x = 0;  //current position
  private int y = 0;
  protected void paint(Graphics g) {
   // TODO 自动生成方法存根
   g.setColor(255, 255, 255);
   g.fillRect(0, 0, getWidth(), getHeight());
   
   g.setColor(0, 0, 0);
   g.drawString(lastKeyName, x, y, g.LEFT|g.TOP);
  } 
  protected void keyPressed(int keyCode)
  {
   if(keyCode >0)
   {
    lastKeyName = this.getKeyName(keyCode);
    
    switch(this.getGameAction(keyCode))
    {
    case UP   : y--; break;
    case DOWN : y++; break;
    case RIGHT: x++; break;
    case LEFT : x--; break;
    }
    this.repaint();
   }
  }
  

 }
 public KeyEventTest()
 {
  myCanvas = new MyCanvas();
  
  quit = new Command("Quit",Command.EXIT,2);
  myCanvas.addCommand(quit);
  myCanvas.setCommandListener(this);
  
 }
 protected void destroyApp(boolean b) throws MIDletStateChangeException
 {
  // TODO 自动生成方法存根
  
 }

 protected void pauseApp()
 {
  // TODO 自动生成方法存根
  
 }

 protected void startApp() throws MIDletStateChangeException
 {
  // TODO 自动生成方法存根
  Display.getDisplay(this).setCurrent(myCanvas);
 }

 public void commandAction(Command c, Displayable d)
 {
  // TODO 自动生成方法存根
  try
  {
   if(c ==quit)
   {
    destroyApp(true);
    notifyDestroyed();
   }
  } catch (MIDletStateChangeException e)
  {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
 }

}