J2ME学习札记
ME体系架构和环境配置
1 JAVA分支:
J2SE JAVA标准版
J2EE JAVA企业版(一般运行在工作站或服务器上)
J2ME JAVA小型版(独立设备、互联移动设备、嵌入式设备)
2 J2ME体系架构
可选包 --------针对特定的手机提供的特定的包
描述
配置 --------核心库和虚拟机 CDC互联设备配置 CLDC互联受限设备
JVM
操作系统
3 软件安装
JDK+WTK(无线工具包)+IDE(Eclipse)
WTK目录下的内容
lib包含了J2ME体系构架支持的开发包
docs包含了WTK文档(最核心的文档是MIDP文档)
apps提供了一写系统自带的Demo Demo的src里边有Demo的源代码
Eclipse安装
要配置Eclipse进行J2ME工作需要EclipseME插件 可以再Eclipse内安装,也可以吧EclipseME的内容导入到Eclipse/plugins目录下
WTK与EclipseME绑定 Eclipse—window—Preferences—DeviceManagment导入设备(即导入WTK的安装目录)
J2ME高级界面开发
11个包:
java.io ----输入输出
java.lang ----字符串、线程等
java.util ----随机数、定时器、日历等
javax.microedition.io ----属于CLDC和MIDP
javax.microedition.lcdui 普通用户界面
javax.microedition.lcdui.game --游戏用户界面的
javax.microedition.media
javax.microedition.media.control --和多媒体有关的包
javax.microedition.midlet ---只包含一个MIDlet类
javax.microedition.pki ---数字签名
javax.microedition.rms ---手机数据库
创建MIDlet
所有的手机程序都要继承于MIDlet抽象类
继承于MIDlet的类有3个函数:
startApp pauseApp destroyApp
开始 暂停 退出
把文件打包之后放入手机就可以运行啦打包生成一个JAR文件和一个JAD文件
JAD文件属性说明:纯文本文件,说明具体的运行位置以及jar文件所在的位置信息。
以下是JAD文件内容:
MIDlet-1: Midlet_1,,Midlet_1
MIDlet-Jar-Size: 925 jar文件的大小
MIDlet-Jar-URL: proj_1.jar jar文件位置信息
MIDlet-Name: proj_1 Midlet Suite 名字
MIDlet-Vendor: Midlet Suite Vendor 厂商
MIDlet-Version: 1.0.0 版本
MicroEdition-Configuration: CLDC-1.1 配置信息DLCD版本
JAR文件解压缩有一个class文件 就是源程序编译后的文件
MIDlet只是提供了一个运行平台,上面的界面要用javax.microedition.lcdui包里得Displayable加上去
Displayable是一个抽象类他有一个Form子类可以用
Display可以获得当前MIDlet上的显示对象
private Form frm = new Form("请选择相应的操作!");
private Display dis;
public Midlet_1() {
//获得当前MIDlet上的显示对象
dis = Display.getDisplay(this);
//将frm设置为当前页面
dis.setCurrent(frm);
}
按钮的添加 Command
用Command定义按钮 然后用form的addCommand方法添加到form上。
private Command comDelt = new Command("删除该号码", Command.SCREEN, 1);
private Command comEdit = new Command("编辑该号码", Command.SCREEN, 1);
private Command comSave = new Command("保存该号码", Command.SCREEN, 1);
private Command comExit = new Command("退出该程序", Command.SCREEN, 1);
private Command comBack = new Command("返回上一页", Command.BACK, 1);
frm.addCommand(comDelt);
frm.addCommand(comEdit);
frm.addCommand(comSave);
frm.addCommand(comExit);
frm.addCommand(comBack);
整理代码如下:
//包
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Midlet_1 extends MIDlet {
//定义所需的内容
private Form frm = new Form("请选择相应的操作!"); //定义form建立一个页面
private Display dis; //定义一个Display用来显示Form
private Command comDelt = new Command("删除该号码", Command.SCREEN, 1);//定义按钮
private Command comEdit = new Command("编辑该号码", Command.SCREEN, 1);//定义按钮
private Command comSave = new Command("保存该号码", Command.SCREEN, 1);//定义按钮
private Command comExit = new Command("退出该程序", Command.SCREEN, 1);//定义按钮
private Command comBack = new Command("返回上一页", Command.BACK, 1);//定义按钮
//构造函数
public Midlet_1() {
//获得当前MIDlet上的显示对象
dis = Display.getDisplay(this);
//将frm设置为当前页面
dis.setCurrent(frm);
//添加Command按钮到frm
frm.addCommand(comDelt);
frm.addCommand(comEdit);
frm.addCommand(comSave);
frm.addCommand(comExit);
frm.addCommand(comBack);
}
protected void startApp() throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
}
高级界面开发
Displayable
Displayable的界面是充满整个屏幕的 Displayable是个抽象类
Form是它的一个子类
创建Form(Displayable)
private Form frm = new Form("请选择相应的操作!")
出现一个程序窗口铺满屏幕 标题是 请选择相应的操作!
然后创建Display
用Display获得显示对象然后再把现实的内容获得
private Display dis;
dis = Display.getDisplay(this)获得当前的显示对象this代表当前的MIDlet离得显示对象
dis.setCurrent(frm);将frm设置为当前页面
这样一个Form就显示在屏幕上了
再给Form添加按钮
按钮的定义是Command("按钮的值",Command.类型,优先级);
private Command comDelt = new Command("删除该号码", Command.SCREEN, 1);
在Form中添加Command
frm.addCommand(comDelt);
这样就有了按钮了
接下来给按钮添加事件
首先要实现CommandListener接口
其次将时间绑定到Displayable(Form)this.CommandListener(frm)
然后重写里边的构造函数commandAction(){}
最后在CommandAction函数里写按钮的实现事件的代码。
public void commandAction(Command c,Displayable d){
if(c == comDelt || c == comEdit ||c == comSave){
frm.append(c.getLabel());
System.out.println(c.getLabel()+"按钮被调用");
}
c是按钮的名称,常用来做判断依据
这样按钮就能实现功能了
具体代码
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class Midlet_1 extends MIDlet implements CommandListener{
private Form frm = new Form("请选择相应的操作!");
private Display dis;
private Command comDelt = new Command("删除该号码", Command.SCREEN, 1);
private Command comEdit = new Command("编辑该号码", Command.SCREEN, 1);
private Command comSave = new Command("保存该号码", Command.SCREEN, 1);
private Command comExit = new Command("退出该程序", Command.SCREEN, 1);
private Command comBack = new Command("返回上一页", Command.BACK, 1);
public Midlet_1() {
}
protected void startApp() throws MIDletStateChangeException {
//获得当前MIDlet上的显示对象
dis = Display.getDisplay(this);
//将frm设置为当前页面
dis.setCurrent(frm);
//添加Command按钮到frm
frm.addCommand(comDelt);
frm.addCommand(comEdit);
frm.addCommand(comSave);
frm.addCommand(comExit);
frm.addCommand(comBack);
frm.setCommandListener(this);
}
public void commandAction(Command c,Displayable d){
if(c == comDelt || c == comEdit ||c == comSave){
frm.append(c.getLabel());
System.out.println(c.getLabel()+"按钮被调用");
}
else if(c == comExit){
this.notifyDestroyed();
}
else{
frm.setTitle("返回");
}
}
protected void pauseApp() {
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
}