在上一篇文章介绍了HelloWorld程序的开发过程,虽然这是一个经典的程序但并不具备任何实质性的功能而且只是在模拟器中仿真运行。经过这么长时间的学习,本文中要向读者在这段时间的学习有所交代,最起码应当让读者能够开发出一个具备简单功能的能够在真机运行的J2ME手机应用程序,也好以此向周围的同学、同事炫耀一番。相信赢得些许羡慕的目光应该不是什么难事。好了,闲话暂且不提,先简单介绍一下本文将要介绍的知识点。
本文将通过一个简单的J2ME程序"整蛊专家"的开发向读者介绍信息框的显示、命令按钮的添加、通过文本框与用户的交互、对命令按钮的响应以及对所开发应用程序的打包发布等主要内容。最终展现给读者的将是一个能够在真机运行的J2ME手机程序。
程序的设计
首先,按照上一篇文章介绍的知识创建J2ME项目Test并添加MIDlet到其中。现在就在EclipseMe生成的框架代码基础上将下面阴影显示的功能代码添加到相应位置:
| package demo; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.TextBox; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class Test extends MIDlet implements CommandListener { private TextBox textbox; // Textbox 显示一条消息 private Display disp; // 引用MIDlet的Display 对象 private Command cmdExit; // 设定按钮用于退出MIDlet private Command cmdOK; // 确定按钮 private Alert alt; // 信息提示对象 public Test() { super(); disp = Display.getDisplay(this); // 获得当前MIDlet的Display对象 cmdExit = new Command("退出", Command.SCREEN, 1); // 新建两个控制按钮 cmdOK = new Command("阅读", Command.OK, 1); textbox = new TextBox("请输入待阅项目序号:", "", 40, 0); // 新建文本框 textbox.addCommand(cmdExit); // 添加控制按钮 textbox.addCommand(cmdOK); textbox.setCommandListener(this); // 开始侦听命令 } protected void startApp() throws MIDletStateChangeException { alt = new Alert("整蛊专家 V1.0");// 开始运行时显示版权信息,新建信息框对象 // 设置显示字符串 alt.setString("==== 整蛊专家 V1.0 ====郎锐2004年作版权所有(C) 2004-2005"); alt.setType(AlertType.INFO); // 设置为普通阅读信息框 alt.setTimeout(Alert.FOREVER); // 信息窗口在按下DONE键后才能进入下一页面 disp.setCurrent(alt, textbox); // 显示信息窗口 } protected void pauseApp() {} protected void destroyApp(boolean arg0){} public void commandAction(Command arg0, Displayable arg1) { if (arg0 == cmdExit) { // 按下退出键时停止运行 destroyApp(false); notifyDestroyed(); } if (arg0 == cmdOK) { // 按下阅读键后阅读对应信息 TextBox textbox = (TextBox)arg1; // 得到用户输入的内容 String sInfo = textbox.getString(); if (sInfo.equals("1") || sInfo.equals("2") || sInfo.equals("3") || sInfo.equals("4") || sInfo.equals("5")) { // 显示项目1的内容 // 根据所选项目选择要显示的内容 if (sInfo.equals("1")) alt.setString("一兄弟脾气甚……"); if (sInfo.equals("2")) alt.setString("猪的四大愿望……"); if (sInfo.equals("3")) alt.setString("春风里,百花下……"); if (sInfo.equals("4")) alt.setString("为什么……"); if (sInfo.equals("5")) alt.setString("昨夜做了……"); alt.setTitle("您正在阅读短信" + sInfo); // 设置标题 }else{ alt.setString("很抱歉,暂时还没有您选择的项目,请重新输入!"); alt.setTitle("错误警告"); // 设置标题 } alt.setType(AlertType.INFO); // 设置为普通阅读信息框 alt.setTimeout(Alert.FOREVER); // 信息窗口在按下DONE键后进入下一页面 disp.setCurrent(alt, textbox); // 显示信息窗口 } } } |
在讲述这段代码之前首先介绍一下MIDlet的生命周期:一个MIDlet在其生命周期中共有三种状态,分别是暂停、活动和停止。MIDlet被加载后首先是处于暂停状态,在J2ME调用startApp()方法后转入活动状态。通常情况下应用程序是不必考虑如何控制其运行状态的,其状态的切换由手机来决定。例如,在程序运行过程中如果有电话呼入则会自动转入暂停状态而无须在与用户交互后才能做出判断。最后,当用户按下手机的取消键时,MIDlet将进入停止状态。
上一页 下一页






