/* * Canvas3let.java * * Created on 2005年4月20日, 下午3:55 */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /** * * @author Administrator * @version */ public class Canvas3let extends MIDlet implements CommandListener{ private Display aDisplay; private Command okCommand; private Command exitCommand; private Command backCommand; private TextBox aTextBox; private Alert showAlert; private Image showImage; private MyCanvas aMyCanvas; public Canvas3let(){ exitCommand=new Command("退出",Command.EXIT,1); okCommand=new Command("进入",Command.OK,1); try{ showImage=Image.createImage("/sohu.png"); } catch(Exception e){} showAlert=new Alert("Loading...","载入中……",showImage,AlertType.INFO); aTextBox=new TextBox("KeyPress Test", "按下进入键后,即可进入显示界面,可以显示所按按键", 25,TextField.ANY); aTextBox.addCommand(exitCommand); aTextBox.addCommand(okCommand); aTextBox.setCommandListener(this); } public void startApp() { aDisplay=Display.getDisplay(this); aDisplay.setCurrent(aTextBox); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c , Displayable d){ if(c==exitCommand){ destroyApp(false); notifyDestroyed(); } else if (c==okCommand){ aMyCanvas=new MyCanvas(); aDisplay.setCurrent(aMyCanvas); } } public class MyCanvas extends Canvas implements CommandListener{ String keyName=""; public MyCanvas(){ backCommand=new Command("后退",Command.EXIT,1); addCommand(backCommand); setCommandListener(this); } public void paint(Graphics g){ //清除屏幕 g.setColor(0xFFFFFF); g.fillRect(0,0,getWidth(),getHeight()); //设置字体颜色并画出所按键的名称 g.setColor(0); g.drawString(keyName,100,100,Graphics.LEFT|Graphics.BOTTOM); } public void commandAction(Command c , Displayable d){ if (c==backCommand){ hideNotify(); //aDisplay.setCurrent(aTextBox); } } public void keyPressed(int keyCode){ keyName=getKeyName(keyCode); repaint(); } protected void hideNotify(){ aDisplay.setCurrent(showAlert,aTextBox); } } }
通过这个程序,主要练习了keyPress的用法。此外,还有hideNotify()的用法,但showNotify()的用法还不是很清楚。 hideNotify()是在画布被从显示屏移除后,实现立刻调用该方法。 shoNotify()是在画布显示在显示屏之前系统将先调用该方法。 
|