1.必須先安裝 NetBeans IDE 4.0 和 NetBeans Mobility Pack 4.0,然後才能開始進行 J2ME MIDP 開發。有關下載和安裝完整環境的說明,請參見 J2ME MIDP 開發下載頁面http://www.Netbeans.org/kb/articles/mobility_zh_CN.Html。
2.創建新的移動應用程序
(1)選擇“文件”>“新建項目”(Ctrl-Shift-N)。在“類別”下選擇“移動”。在“項目”下選擇“移動應用程序”,然後單擊“ 下一步”。
(2)在“項目名稱”下輸入 HuaRongDao。將項目主目錄更改為您系統上的任何目錄。從現在起,我們將該目錄稱為 $PROJECTHOME。
(3)不要選中“創建 HelloMIDlet”復選框。單擊“下一步”。選CLDC1.0 MIDP1.0,
(4)將 J2ME Wireless Toolkit 作為選定的目標平台。
(5)單擊“完成”。IDE 將創建 $PROJECTHOME./HuaRongDao 項目文件夾。該項目文件夾包含所有的源和項目元數據,如項目 Ant 腳本。此時將在“項目”窗口中打開 HuaRongDao 項目。
(6)現在,我們來添加一個MIDlet, 右鍵單擊項目,選新建MIDlet,名字為HuaRongDao,不要寫package.點確定生成, 然後在生成後的 代碼裡加入CommandListener支持,代碼框架如下:
/* * HuaRongDaoMidlet.Java *
* Created on 2005年7月1日, 下午8:18
*/
import Javax.microedition.midlet.*;
import Javax.microedition.lcdui.*;
/**
*
* @author lin
* @version
*/
public class HuaRongDaoMidlet extends MIDlet implements CommandListener
{
public void startApp() {}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable d) {}
}
3.開始編碼
(1)加入退出按鈕,這裡,我們用TextBox這種高級UI來做例子:
public class HuaRongDaoMidlet extends MIDlet implements CommandListener
{
private Display display;
private final static Command CMD_EXIT = new Command("退出", Command.EXIT, 1);
public HuaRongDaoMidlet()
{
display = Display.getDisplay(this);
}
public void startApp()
{
TextBox t = new TextBox("TextBox的第一個參數","TextBox的第二個參數",256,0);
t.addCommand(CMD_EXIT);
t.setCommandListener(this);
display.setCurrent(mainList);
}
......
public void commandAction(Command c, Displayable d)
{
if (c == CMD_EXIT)
{
destroyApp(false);
notifyDestroyed();
}
}
}
A.關於J2ME的api函數,可以在WTK的docs目錄當中查到。
B.我們使用的是MIDP1.0的函數,2.0支持游戲函數,但是大部分原先的手機都不支持。
C.TextBox是可輸入框,有標題,缺省內容和內容長度等參數。
(2)創建一個處理圖片的類Images, 處理圖片的方式在2.0當中有了很大的改進,可以直接從一張圖片中按照坐標取一部分,但是1.0還沒有這個功能,所以我們使用Image數組來實現。
首先,我們先來顯示一個圖片,來熟悉一下有關image的操作。首先,加入一個Image和包含它的ImageItem,因為Image本身不能顯示,
必須包在ImageItem中,然後創建一個Form,把ImageItem加到Form中,最後在屏幕上顯示這個Form。
public void startApp()
{
Image a;
ImageItem i;
Form props = new Form("測試頁");
try
{
a = Image.createImage("/Duke.png");
i = new ImageItem("Java吉祥物",a,ImageItem.LAYOUT_DEFAULT,"圖片無法顯示");
props.append(i);
}
catch (IOException e)
{
a = null;
}
props.addCommand(CMD_EXIT);
props.setCommandListener(this);
display.setCurrent(props);
}