当前位置:早雪网网络学院编程文档Java → J2ME学习札记1

J2ME学习札记1

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-22 18:42:19
d commandAction(Command c, Displayable s)
{
if (c == exitCommand)
{
destroyApp(false);
   notifyDestroyed();
}
        }
 这个方法是事件处理的中枢,它接受各种命令,并对其进行分析,再分别调用合适的处理方法
。在这个例子中,当接收到Exit命令以后,马上销毁程序,退出。

10)destroyApp()方法的作用是退出程序并销毁程序对象。pauseApp()方法的作用是暂停程序
,并销毁容器对象或者是画布对象。手机屏幕将会是一片空白。

javax.microedition.lcdui:用户界面包,主要用于构造程序的用户界面。Command、Form都
是这个包的类。
javax.microedition.rms:这个包实现了对手机数据的存取功能。
javax.microedition.midlet:这个包是MIDlet程序的声明周期包,主要定义了MIDlet类,MIDl
et类是一个抽象类,里面声明了startApp()、destroyApp()、pauseApp()等抽象方法。
javax.microedition.io:网络IO包。有HttpConnection接口和Connection接口、Datagram接
口。
java.io.*
java.lang.*
java.util.*
上面这三个包属于J2ME核心包,J2ME中的核心包和J2SE中的同名核心包有些差别,主要是功能
大大简化了,许多类、方法都没有了,只能实现一些最基本的功能。

J2ME开发中有中文问题吗?可能有,但是我目前没有遇到。因为我没有手机,只能在模拟器上
运行J2ME程序,真实的情况是什么样子我也不知道。在水木上有人说已经出现了中文问题,在
模拟器上好好的,到了真正的手机上却是一团乱码。我现在也没有办法,只有在遇到的时候再
补上这一节。我写的测试程序如下所示,这个程序是在HelloWorld.java的基础上改进而来的

package fancy.test;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

public class Poem extends MIDlet implements CommandListener
{
private Display display;
        private Form props;


private Command exitCommand = new Command("Exit", Command.EXIT, 1);

public Poem()
{
display = Display.getDisplay(this);
        }

public void startApp()
{
props = new Form("影落寒潭的签名档");
props.append("小楼一夜听春雨\n");
props.append("深巷明朝卖杏花\n\r");
props.append("虹虹的签名档\n");
props.append("鸳鸯独宿何曾惯\n");
props.append("化作西楼一缕云\n");
props.addCommand(exitCommand);
props.setCommandListener(this);
display.setCurrent(props);
        }

public void commandAction(Command c, Displayable s)
{
if (c == exitCommand)
{
destroyApp(false);
   notifyDestroyed();
}
        }

public void destroyApp(boolean unconditional)
{
        }

public void pauseApp()
{
display.setCurrent(null);
props = null;
        }
}
 使用普通的编辑器编辑好上述文件以后,保存为Poem.java,保存路径为src\fancy\test。然
后在Ktoolbar中编译,一切无误之后,单击Setting按钮,出现一个配置窗口,选择MIDlets面板
,单击Add按钮,依次输入Poem、fancy.png、fancy.test.Poem三项。单击OK按钮,再单击OK按
钮,关闭配置窗口,回到Ktoolbar的主界面,再次编译。一切无误之后,单击Run按钮运行程序。
Poem的运行效果如下图所示。
 注意:每新编写一个程序,都要按照这个步骤进行配置,再编译运行,我以后就不再重复描述
这个步骤了。


请看下面的代码(Prop.java):
package fancy.test;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

public class Prop extends MIDlet implements CommandListener
{
private Display display;
        private Form props;


private Command exitCommand = new Command("Exit", Command.EXIT, 1);

public Prop()
{
display = Display.getDisplay(this);
        }

public void startApp()
{
props = new Form("System Properties");
props.append("Hello World!\n");
long time=System.currentTimeMillis();
props.append("current time:"+time+"\n");
props.append("microedition.configuration:"+
System.getProperty("microedition.configuration")+"\n");
props.append("microedition.profiles:"+
System.getProperty("microedition.profiles")+"\n");
props.append("microedition.platform:"+
System.getProperty("microedition.platform")+"\n");
props.append("microedition.locale:"+
System.getProperty("microedition.locale")+"\n");
props.append("microedition.encoding:"+
System.getProperty("microedition.encoding")+"\n");
props.append("java.version:"+System.getProperty("java.version")+"\n");//null
props.append("java.vendor:"+System.getProperty("java.vendor")+"\n");//null
props.append("java.vm.name:"+System.getProperty("java.vm.name")+"\n");//null
props.append("java.vm.version:"+System.getProperty("java.vm.version")+"\n");//
null
props.append("os.name:"+System.getProperty("os.name")+"\n");//null
props.append("os.arch:"+System.getProperty("os.arch")+"\n");//null
props.append("os.version:"+System.getProperty("os.version")+"\n");//null
props.append("user.name:"+System.getProperty("user.name")+"\n");//null
props.addCommand(exitCommand);
props.setCommandListener(this);
display.setCurrent(props);
       }

public void commandAction(Command c, Displayable s)
{
if (c == exitCommand)
{
destroyApp(false);
   notifyDestroyed();
}
        }

public void destroyApp(boolean unconditional)
{
        }

public void pauseApp()
{
display.setCurrent(null);
props = null;
        }
}
 这个程序的作用是输出系统中各个环境属性的值。诀窍是使用System类的getProperty()方
法。请注意,J2ME核心包的System类已经不支持getProperties()方法了,而且很多环境属性都
不再支持了,比如java.version、java.vendor等等。


查看内存利用情况
请看程序(Memory.java):
package fancy.test;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Memory extends MIDlet implements CommandListener
{
private Display display;
        private Form props;
 
private

上一页  [1] [2] [3] [4]  下一页

[数据载入中...] [返回上一页] [打 印]