keyPress事件中的keyCode和action 两个参数(附测试按键的一个小demo)

protected void keyPressed(int keyCode) ---------摘自j2me的API文档
有时候为了方便处理我们会传递

 

两个参数用于处理按键事件.

 

if(action == Canvas.LEFT){
	System.out.println("LEFT is pressed");
}

else if(keys == Canvas.KEY_STAR){
	System.out.println("KEY_STAR is pressed");
}
else if(action == Canvas.RIGHT) {
	System.out.println("RIGHT is pressed");
}
 
当代码在运行的时候可能会出现多个条件都满足的情况。

moto手机:*键 为42 经过this.getGameAction(keyCode)装换后 刚好和左键相等。这样第二个分支永远执行不到。也在想这个东西怎么设计了可移植性更好

大家有什么意见了

写了一个用于测试的小的demo 作用:装在真机上显示按键的 key action 和keyName 的值

Main函数入口

import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class Main extends MIDlet { Display dis; public Main() { // TODO Auto-generated constructor stub dis = Display.getDisplay(this); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } protected void startApp() throws MIDletStateChangeException { // TODO Auto-generated method stub dis.setCurrent(new MyCanvas()); } }

canvas画布:

import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; public class MyCanvas extends Canvas { private int keyCode; private String keyName; private int action; MyCanvas(){ } protected void paint(Graphics g) { // TODO Auto-generated method stub /** 清屏**/ int oldC = g.getColor(); g.setColor(0xffffff); g.fillRect(0, 0, this.getWidth(), this.getHeight()); g.setColor(oldC); g.drawString("you press: "+ keyCode,0, 0, Graphics.TOP|Graphics.LEFT); g.drawString("name is: "+ keyName,0, 30, Graphics.TOP|Graphics.LEFT); g.drawString("action is: "+ action,0, 60, Graphics.TOP|Graphics.LEFT); } protected void keyPressed(int keyCode){ this.keyCode = keyCode; keyName = this.getKeyName(keyCode); action = this.getGameAction(keyCode); this.repaint(); } }

 

 

 

 

 

你可能感兴趣的:(keyPress事件中的keyCode和action 两个参数(附测试按键的一个小demo))