作者:Snail
原文地址:http://www.matrix.org.cn/resource/article/43/43832_J2ME.html
前奏
前几天把eclipse中的j2me开发环境搭建好了。接下来就开始我的j2me学习之旅了~!
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 ,将我们要显示的画面显示到屏幕上