网上关于j2me程序设计方面的基础文档太少了!只有自己看代码了,好在wtk中带了不少的demo,找了一个比较简单的,在屏幕上显示设备的属性。下边是代码:
package example;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
听人说学j2me前得先学学java语言,我没听,反正也是心血来潮!但是上边这几句话就不明白是什么意思了!我想大概和vc里链接库文件差不多吧!不管它。当年英语四级得阅读理解我就是靠“猜”的,故技重施吧!
public class PropExample extends MIDlet implements CommandListener {
类的定义,implements是什么意思也不懂,反正有了CommandListener,才能实现既定的命令的执行
private Display display;
这个Display应该就是代表了设备的显示,应该是MIDlet中已经存在的一个类。
private Form props;
用于向屏幕输出信息的一个对象,好像就是一种分层的机制,和GBA的硬件实现差不多。同一个display中可以若干个不同的form,用display.setCurrent方法设置显示哪一个。方便!!!
private StringBuffer propbuf;
字符串缓冲
private Command exitCommand = new Command("Exit", Command.EXIT, 1);
Command对象应该算是比较重要的对象了!与用户的操作相对应,是用户控制设备的最直接的桥梁,可惜,没太看懂、大概意思也就是定义了一个命令,并把它追加到某个FORM中(下边会提到),这个FORM就可以使用这个命令了!现在这个命令是EXIT,参数中的“Exit”是在FORM中显示的字符;Command.EXIT应该是既定的操作,当点击硬件上的exit键的时候就执行这个操作
对设备的每种操作都是在MIDlet中定义好了的,我要做的就是向某个form中追加这个操作,让这个form能够执行这个操作
public PropExample() {
构造函数,初始化一些东西
display = Display.getDisplay(this);
取得设备的显示
props = new Form("System Properties");
追加一个form
}
public void startApp() {
每个类中都有的函数,从这里开始执行代码。重写MIDlet类的函数
Runtime runtime = Runtime.getRuntime();
runtime.gc();
long free = runtime.freeMemory();
long total = runtime.totalMemory();
propbuf = new StringBuffer(50);
初始化字符缓冲
props.append("Free Memory = " + free + "/n");
props.append("Total Memory = " + total + "/n");
props.append(showProp("microedition.configuration"));
props.append(showProp("microedition.profiles"));
props.append(showProp("microedition.platform"));
props.append(showProp("microedition.locale"));
props.append(showProp("microedition.encoding"));
向form中追加字符串
props.addCommand(exitCommand);
向form中追加exit命令,并让“Exit”显示出来
props.setCommandListener(this);
应该是一个等待命令输入并接收的listener
display.setCurrent(props);
让该form显示出来
}
public void commandAction(Command c, Displayable s) {
类似exit命令的回调函数,当接收到命令的时候,调用这个函数,重写MIDlet类的函数
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
String showProp(String prop) {
用户自定义的函数,不是从父类继承的根据属性名,取得属性值,并返回
String value = System.getProperty(prop);
propbuf.setLength(0);
propbuf.append(prop);
propbuf.append(" = ");
if (value == null) {
propbuf.append("<undefined>");
} else {
propbuf.append("/"");
propbuf.append(value);
propbuf.append("/"");
}
propbuf.append("/n");
return propbuf.toString();
}
public void pauseApp() {
}
继承父类的函数
public void destroyApp(boolean unconditional) {
}
}
继承父类的函数