public class MyCanvas extends GameCanvas { private String message = "Press any key"; public MyCanvas( MIDlet midlet ){ super( midlet ); } protected void paint( Graphics g ){ g.setColor( 255, 255, 255 ); g.fillRect( 0, 0, getWidth(), getHeight() ); g.setColor( 0, 0, 0 ); g.drawString( message, getWidth()/2, 0, g.TOP | g.HCENTER ); } protected void keyPressed( int keyCode ){ if( keyCode == fireKey ){ message = "FIRE"; } else if( keyCode == leftKey ){ message = "LEFT"; } else if( keyCode == rightKey ){ message = "RIGHT"; } else if( keyCode == upKey ){ message = "UP"; } else if( keyCode == downKey ){ message = "DOWN"; } else { message = getKeyName( keyCode ); } repaint(); }}指针事件是可选项,因为不是所有的MIDP可用的设备都支持指针。你可以在指针有效的时候来使用它的优势。但是你不能够假设它是可用的。你可以检测是否指针事件可以被激发,通过调用Canvas.hasPointerEvents。指针事件方法获取指针的位置:
protected void pointerPressed( int x, int y ){ // do something here}另一种方法引导用户输入是为canvas附加命令。一个命令是一个动作的抽象表现。它有一个用户定义的label, type和优先级。设备使用type映射命令到相应的键或按钮。例如,如果设备有一个标准的OK键,指定一个命令类型为OK,确保OK按钮激发这个命令。有效的类型有BACK, CANCEL, EXIT, HELP, ITEM, OK, SCREEN, 和STOP。一部分或全部这些都可以映射到相同的按键或按钮。这样,当有冲突的时候,设备可以使用优先级来适当的排列命令次序。优先级是一个正整数,1是最高优先级。
命令是使用Command类来创建的,如下:
Command exitCommand = new Command( "Exit", Command.SCREEN, 1 );
你使用addCommand方法来将命令添加到canvas:
canvas.addCommand(exitCommand);
你必须注册命令,使用:
setListener: canvas.setListener( listener ) ;