这里是在eclipse中安装eclipseMe插件来完成的。到网上下载J2ME套件eclipseme.feature_1.7.9_site.zip。然后将里面的plugins和features的JAR包分别拷贝到eclipse下的对应的plugins和features目录下面.这样eclipse的插件就安装成功了。然后还要安装J2me的开发安装包.可以使用SUN,Samsung,Motorlora,等提拱的开发包。在这里我使用Sun的sun_java_wireless_toolkit-2_5_2-ml-windows.exe.默认安装,完成后,然后还要对其进行配置.打开eclipse,然后选择windows/references选项.选中J2me节点,在WTK Root下选择开发套件的目录,在这里我选择D:/SamsungSDK.再选中Device Management。点击import按钮。在弹出的对话框中点击Brower.选中至bin目录下D:/SamsungSDK/bin.随之点击refresh。就可以引入该套件所支持的所有Device.你可以对其进行一些配置即可.
这样J2ME的开发环境就配置好了。接下来我们开发一个试例,来测试是否配置成功.点击NEW/Other选项,弹出一个创建项目的对知框.在里面有一个J2ME节点,选中J2ME Midlet Suite选项,点击Next,接着输入项目的名字(我输入j2meTextExample),点击Next,这里选择开发的设备,这跟实际要用到的手机型号有关,你可以选择你所需要的设备.,最后点击finish。这样就创建好了一个j2me项目了。
然后就可以添加一些J2me Midlet类了.在这里我首先创建了一个包:com.j2me.app
添加一个SimpleMidletApp.里面最初只有一些startApp(),destroyApp(),pauseApp()方法。
你可以运行一下看看效里。你右键点击该simpleMidletApp类,点击run as /Emulated J2ME Midlet。即可,如果弹出了一个空白的手机模拟器。说明运行正常。这样J2ME开发环境就建立起来了。这为以后开发程序做好准备了。
下面我举一个开发类似电话本的例子,来呈现一个简单的一个开发程序
package com.j2me.app;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;//类似GUI包
import javax.microedition.rms.*;//数据库包
//一个简单的测试程序
public class SimpleMidletApp extends MIDlet implements CommandListener {
private Display dis;
private Form form=new Form("Phone测试");
private TextField tf_name=new TextField("姓名: ","",255,TextField.ANY);
private TextField tf_phone=new TextField("电话号码: ","",255,TextField.NUMERIC);
private Command cmdOk=new Command("添加",Command.SCREEN,1);
private Command cmdExit=new Command("退出",Command.EXIT,1);
private Image img,alertImg=null;
private RecordStore rs=null;
private String phone,name;
//创建一个提示框
private Alert alert;
public SimpleMidletApp(){
try{
img=Image.createImage("/face.png");//注意图片文件要以.png做为后缀名
alertImg=Image.createImage("/alert.png");
}catch(Exception evt){
evt.printStackTrace();
}
alert=new Alert("温馨提示","",alertImg,AlertType.INFO);
}
protected void startApp() throws MIDletStateChangeException {
if(dis==null){
dis=Display.getDisplay(this);
}
form.append(tf_name);
form.append(tf_phone);
form.addCommand(cmdExit);
form.addCommand(cmdOk);
//添加事件监听程序
form.setCommandListener(this);
dis.setCurrent(form);
}
//处理事件
public void commandAction(Command c, Displayable d) {
//。。。。。。。。。。。。。
if(c==this.cmdExit){
//退出按钮
try {
this.destroyApp(true);
} catch (Exception e) {
e.printStackTrace();
}
this.notifyDestroyed();
}
if(c==cmdOk){
//得到文本框中的值
name=tf_name.getString();
phone=tf_phone.getString();
if(name.length()==0 || phone.equals("")){
alert.setString("名字或电话号码不能为空");
alert.setTimeout(2000);
dis.setCurrent(alert,form);
//一段时间跳回至form
}
//存储到数据库中
//如何将字节流存入数据库,思考
openDataBase();
try {
rs.addRecord(name.getBytes(),0,name.getBytes().length);
rs.addRecord(phone.getBytes(),0,phone.getBytes().length);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void openDataBase(){
try {
rs=RecordStore.openRecordStore("RS1", true);
//类似数据名,true则表示存在则覆盖,不存在则创建
} catch (RecordStoreFullException e) {
e.printStackTrace();
} catch (RecordStoreNotFoundException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
}