J2ME学习笔记(2)
1) package fancy.test;
这行代码声明当前类所在的包。这是有必要的。而且这个包名必须和src文件夹中的目录结构对应。
2)
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
这两行代码导入必要的Java包,这两个包的作用在后面会提及,这里就不多说了。
3)
public class HelloWorld extends MIDlet implements CommandListener
J2ME程序一般应该继承MIDlet,实现CommandListener。就如Applet必须继承Applet,可能实现Runnable接口一样。
4)
private Display display;
private Form props;
定义两个私有对象,Display代表屏幕,显示区域。Form是容器的一种。在J2ME程序中,不但有容器的概念,还有画布(Canvas)的概念。这个程序在Form容器中显示文本。
5)
private Command exitCommand = new Command("Exit", Command.EXIT, 1);
声明一个Command对象。J2ME的事件处理机制和J2SE的事件处理机制不太一样。在J2ME程序中,必须预先定义一些Command对象,注册到程序中。当设备发生了某个事件,会产生相应的Command对象,并把它传递给一个事件处理函数----commandAction(),由它对所产生的事件做统筹处理。
6)
public HelloWorld()
{
display = Display.getDisplay(this);
}
这个是构造函数,函数内部,调用Display对象的静态方法---getDisplay(),获取
屏幕对象,实例化display变量。这个调用是必要的。你可以在构造函数中做这个工作,也可以在startApp()方法中做这个工作。推荐在构造函数中完成。
7)MIDlet程序的运行流程
构造函数---->startApp()------>侦听事件,接受命令
------->commandAction()方
法----
--->调用别的方法----------->如果是exit命令
--------->pauseApp()--------->destroyA
pp()方法。实际上MIDlet程序的运行流程和Applet程序的运行流程差不多。
8)
public void startApp()
{
props = new Form("Hello World");
props.append("Hello World!/n");
props.addCommand(exitCommand);
props.setCommandListener(this);
display.setCurrent(props);
}
这是startApp()方法。这个方法是父类的抽象方法,在子类中必须予以覆盖。首先实例化Form对象----------props,Form的构造函数的参数(Hello World)就是屏幕的标题。
Form对象是一容器,在里面可以包含别的东西,props.append("…..");的作用就是在这个容器中存放一个字符串。这个字符串会在屏幕中显示出来。
接下来的三行代码分别做这样的工作:
将Exit命令注册到Form对象(props)中,这样Form对象(props)可以对该命令作出响应。
设置Form对象(props)的命令监听者。
将Form对象设置为屏幕显示的对象。
你可以试着注释掉这三行代码,再编译运行这个程序,看看会发生什么情况。
9)
public void 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类,MIDlet类是一个抽象类,里面声明了startApp()、destroyApp()、pauseApp()等抽象方法。
javax.microedition.io: 网络 IO包。有HttpConnection接口和Connection接口、Datagram接口。
java.io.*
java.lang.*
java.util.*
上面这三个包属于J2ME核心包,J2ME中的核心包和J2SE中的同名核心包有些差别,主要是功能大大简化了,许多类、方法都没有了,只能实现一些最基本的功能。
1) package fancy.test;
这行代码声明当前类所在的包。这是有必要的。而且这个包名必须和src文件夹中的目录结构对应。
2)
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
这两行代码导入必要的Java包,这两个包的作用在后面会提及,这里就不多说了。
3)
public class HelloWorld extends MIDlet implements CommandListener
J2ME程序一般应该继承MIDlet,实现CommandListener。就如Applet必须继承Applet,可能实现Runnable接口一样。
4)
private Display display;
private Form props;
定义两个私有对象,Display代表屏幕,显示区域。Form是容器的一种。在J2ME程序中,不但有容器的概念,还有画布(Canvas)的概念。这个程序在Form容器中显示文本。
5)
private Command exitCommand = new Command("Exit", Command.EXIT, 1);
声明一个Command对象。J2ME的事件处理机制和J2SE的事件处理机制不太一样。在J2ME程序中,必须预先定义一些Command对象,注册到程序中。当设备发生了某个事件,会产生相应的Command对象,并把它传递给一个事件处理函数----commandAction(),由它对所产生的事件做统筹处理。
6)
public HelloWorld()
{
display = Display.getDisplay(this);
}
这个是构造函数,函数内部,调用Display对象的静态方法---getDisplay(),获取
屏幕对象,实例化display变量。这个调用是必要的。你可以在构造函数中做这个工作,也可以在startApp()方法中做这个工作。推荐在构造函数中完成。
7)MIDlet程序的运行流程
构造函数---->startApp()------>侦听事件,接受命令
------->commandAction()方
法----
--->调用别的方法----------->如果是exit命令
--------->pauseApp()--------->destroyA
pp()方法。实际上MIDlet程序的运行流程和Applet程序的运行流程差不多。
8)
public void startApp()
{
props = new Form("Hello World");
props.append("Hello World!/n");
props.addCommand(exitCommand);
props.setCommandListener(this);
display.setCurrent(props);
}
这是startApp()方法。这个方法是父类的抽象方法,在子类中必须予以覆盖。首先实例化Form对象----------props,Form的构造函数的参数(Hello World)就是屏幕的标题。
Form对象是一容器,在里面可以包含别的东西,props.append("…..");的作用就是在这个容器中存放一个字符串。这个字符串会在屏幕中显示出来。
接下来的三行代码分别做这样的工作:
将Exit命令注册到Form对象(props)中,这样Form对象(props)可以对该命令作出响应。
设置Form对象(props)的命令监听者。
将Form对象设置为屏幕显示的对象。
你可以试着注释掉这三行代码,再编译运行这个程序,看看会发生什么情况。
9)
public void 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类,MIDlet类是一个抽象类,里面声明了startApp()、destroyApp()、pauseApp()等抽象方法。
javax.microedition.io: 网络 IO包。有HttpConnection接口和Connection接口、Datagram接口。
java.io.*
java.lang.*
java.util.*
上面这三个包属于J2ME核心包,J2ME中的核心包和J2SE中的同名核心包有些差别,主要是功能大大简化了,许多类、方法都没有了,只能实现一些最基本的功能。