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中的同名核心包有些差別,主要是功能大大簡化了,許多類、方法都沒有了,只能實現一些最基本的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章