MIDlet 基本结构
MIDlet是MIDP的基本执行单元。所有MIDlet必须继承自 javax.microedition.midlet.MIDlet类。该类定义了三个abstract方法 (startApp()、pauseApp()、destroyApp()),应用程序管理器就是通过上面这三个方法控制着MIDlet的生命周期。在编写MIDlet时必须要实现这三个方法。因此MIDlet的基本结构如下:
import javax.microedition.midlet.*;
public class
自定义类名 extends MIDlet
{
public 自定义类名(){}//构造方法
public void startApp(){}//启动或重新启动MIDlet
public void pauseApp(){}//暂停Midlet
public void destroyApp(boolean unconditional){}//销毁Midlet
}
当MIDlet被加载后,会首先调用MIDlet的无参构造方法进行初始化。如果没有构造方法 会自动调用缺省构造方法。如果只是定义了一个带有参数的构造方法 编译器就不会自动加载缺省构造方法。必要的话 需要另外写一个无参的 以保证正确初始化。
仔细观察 基本结构,并没有发现我们熟悉的 public static void main(String[] args){}方法,这是MIDP规范规定的。如果Midlet中写了该方法,应用程序管理器将忽略它。还有Midlet 开始必须要import javax.microedition.midlet.*;
简单的MIDlet编写
现在开始动手编写我们的第一个MIDlet。以HelloMidlet为例。
打开eclipse3.0
文件--新建--其他--J2ME -- J2ME Midlet Suite --键入项目名称 HelloMidlet--选择开发平台 这里我选择 J2ME Wireless Toolkit 2.2 MIDP 2.0 Platform .
文件--新建--其他--J2ME -- J2ME Midlet --源文件夹项 已经自动填写了 HelloMidlet 我们只要在名称处 键入 HelloMidlet 即可,其他的保持缺省。
接下来主要的工作就是代码的编写了。具体代码如下:
import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import javax.microedition.lcdui.*;//界面类 /*
* 创建日期 2005-10-2
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/ /**
* @author Snail
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/ public class HelloMidlet extends MIDlet { private Display display;
private Form form; /**
*
*/ public HelloMidlet() { super(); // TODO 自动生成构造函数存根 display = Display.getDisplay(this); form = new Form("HelloMidlet"); form.append("Welcom to J2ME World!"); } /* (非 Javadoc)
* @see javax.microedition.midlet.MIDlet#startApp()
*/ protected void startApp() throws MIDletStateChangeException { // TODO 自动生成方法存根 display.setCurrent(form); } /* (非 Javadoc)
* @see javax.microedition.midlet.MIDlet#pauseApp()
*/ protected void pauseApp() { // TODO 自动生成方法存根 } /* (非 Javadoc)
* @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
*/ protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO 自动生成方法存根 } }
代码其实很简单,主要工作就是通过Display 引用设置当前屏幕为form ,将我们要显示的画面显示到屏幕上。