捕捉键盘输入的ASCⅡ码”程序
通过前面的介绍,我们对J2ME已经有了一个直观的认识。下面我们将通过编写一个具体的实例程序,来进一步说明J2ME编写手机应用程序的方法。本例程序应用于摩托罗拉388手机,例程完成后,将捕捉键盘输入的ASCⅡ码。
1.关于开发工具
MotoJ2SDK是摩托罗拉388手机定制的命令行开发工具包,其中集成的开发环境包括有CodeWarrior、JCreator等。 无线手持设备(MDIP)简易开发工具包(MDIP的安装方法前文中已有介绍)。 Java 2 SDK 1.3是必备的,它提供开发、测试和运行Java程序的平台(安装方法见前文)。 开发环境笔者推荐使用JCreator。
2.JCreater+MotoJ2SDK的配置与使用
这是必须而且是极其重要一步,如果配置不正确,你的程序将无法运行。我们假设所有开发工具的安装路径如下: JCreator:D:/Program Files/Xinox Software/JCreator LE MotoJ2SDK:D:/Motoj2sdk JDK:D:/jdk1.3.1 开始配置之前,我们首先要激活模拟环境。运行D:/MotoJ2SDK/generic/scripts/runConstructor.bat,并正确选择手机型号、选择语言、选择Normal,最后点击;创建”即可。完成以上工作后,我们就可以进行配置了。 第一步,选择Configure→Options→JDK Profiles。 注意:一定新建profile and select;D:/jdk1.3.1”。 将该名字更改为;J2ME 388”;Add classes path更改为;D:/Motoj2sdk/lib”;Add documentation path更改为;D:/Motoj2sdk/docs”。 第二步,选择 Configure→Options→JDK Tools。 选择Complier,选中And Edit It项,将parameters更改为;-O -bootclasspath D:/motoj2sdk/lib $[JavaFiles]”。 第三步,选择Configure→Options→Tools。 单击;New”按钮,选择DOS command新建一个名字为;Preverifier”的DOS command,并将arguments更改为;d:/Motoj2sdk/bin/preverifier.exe -classpath "d:/Motoj2sdk/lib" -d . .”;将initial directory更改为;$[PrjDir]”。 第四步,按上面的方法在新建一个名字为;Run Emulator”的DOS command。 将arguments更改为;java–D java.library.path=d:/MotoJ2SDK/lib -classpath "d:/MotoJ2SDK/bin/Emulator.jar";;"d:/MotoJ2SDK/ConfigTool.jar" com.mot.tools.j2me.emulator.Emulator -classpath$[PrjDir];;"d:/MotoJ2SDK/lib" –deviceFiled:/MotoJ2SDK/bin/resources/device.props javax.microedition.midlet.AppManager $[CurClass] -JSA 1 1" 将initial directory 更改为 ;d:/Motoj2sdk/bin”。 第五步,同样按照上面的方法新建一个名字为;Create Jar”的DOS command。 将arguments更改为;"$[JavaHome]/bin/jar.exe" cvfM $[PrjName].jar META-INF/MANIFEST.MF *.CLASS *.png”。 将 initial directory 更改为;$[PrjDir]。”
3.编写实例代码
选择;Empty Project”新建一个工程,并取名为myJ2 。JCreater会自动在你的工作目录中生成子目录;myJ2”。选择;java File”新建一个java文件。编写以下代码:
import javax.microedition.lcdui.*;; import javax.microedition.midlet.*;; public class test extends MIDlet implements CommandListener { private KeyEventsDemoCanvas myCanvas;; private Display myDisplay;; private Command okCommand = new Command("OK", Command.OK, 1);; myJ2() { myDisplay = Display.getDisplay(this);; myCanvas = new KeyEventsDemoCanvas();; myCanvas.addCommand(okCommand);; myCanvas.setCommandListener(this);; } public void commandAction(Command c, Displayable s) { } protected void startApp() throws MIDletStateChangeException { myDisplay.setCurrent(myCanvas);; } protected void pauseApp() { } protected void destroyApp(boolean unconditional) { } class KeyEventsDemoCanvas extends Canvas { public final int BACKGROUND_COLOR = 0xFFFFFF;; public final int FOREGROUND_COLOR = 0x000000;; private int lastKey;; public void paint(Graphics g) { g.setColor(BACKGROUND_COLOR);; g.fillRect(0, 0, getWidth(), getHeight());; g.setColor(FOREGROUND_COLOR);; g.drawString("Press a key!", 0, 0, Graphics.TOP | Graphics.LEFT);; if (lastKey != 0) { g.drawString("Key Code: " + lastKey, 0, g.getFont().getHeight(), Graphics.TOP | Graphics.LEFT);; try { g.drawString("Action: " + getGameAction(lastKey), 0, 2 * g.getFont().getHeight(), Graphics.TOP | Graphics.LEFT);; g.drawString("Key Name: " + getKeyName(lastKey), 0, 3 * g.getFont().getHeight(), Graphics.TOP | Graphics.LEFT);; } catch (Exception e) { } } } public void keyPressed(int keyCode) { lastKey = keyCode;; repaint();; } public void keyRepeated(int keyCode) { System.out.println("Key repeated" + keyCode);; } }
保存文件,并命名为myJ2.java。在Project中单击;Add file”按钮,在出现的对话框中选中你刚才的myJ2.java文件,编译程序,运行即可。