使用NetBeans進(jìn)行J2ME開發(fā)(一):別讓程序員的手機(jī)閑著
Posted on 2007-07-16 21:13 京山游俠 閱讀(10631) 評論(16) 編輯 收藏 所屬分類: NetBeans與J2ME 我們是程序員,我們沒有各種各樣的應(yīng)酬,電腦和網(wǎng)絡(luò)就是我們的整個(gè)世界。上班之余,我們該如何自娛自樂呢?想一想我們每天別在褲腰帶上的手機(jī),再想一想我們已經(jīng)非常熟悉Java,那么,我們?yōu)槭裁床粚憥讉€(gè)J2ME的手機(jī)程序玩玩呢?
首先,我們需要搭建一個(gè)開發(fā)環(huán)境。Eclipse和NetBeans都是好選擇。我這里選擇的是NetBeans 5.5.1加Mobile Pack 5.5.1, 它們的下載地址如下圖:
?
點(diǎn)擊上面的Download NetBeans IDE按鈕,就可以進(jìn)入到詳細(xì)的下載頁面,如下圖,這里,我們只需要NetBeans和MobilePack,其它的我們用不到。
下載完成后,運(yùn)行安裝程序,安裝完后,運(yùn)行NetBeans IDE,如下圖:
本來以為,NetBeans IDE的界面是使用Swing編寫的,肯定漂亮不起來。現(xiàn)在一看,以前的偏見都沒有了,這個(gè)界面的確很漂亮,看來SUN再超越Eclipse方面的確下了不少功夫。在這個(gè)啟動界面中,我們甚至可以訪問NetBeans星球中的博客,確實(shí)令人耳目一新。此外,從NetBeans IDE的菜單來看,似乎功能比Eclipse要多,看來以后還得好好探索才行啊。至于NetBeans速度慢的問題,我再也不需擔(dān)心,因?yàn)槲覄偱渲昧艘粋€(gè)雙核CPU加4G內(nèi)存的臺式機(jī)。這也正是為什么我直到現(xiàn)在才涉足NetBeans的原因。
廢話少說,下面來看看怎么編寫手機(jī)程序吧。
首先,新建項(xiàng)目,在類別中選Mobile,在項(xiàng)目中選“Mobile應(yīng)用程序”,如下圖:
點(diǎn)下一步,在這里輸入項(xiàng)目的名稱和保存項(xiàng)目的位置,注意這里,我們?nèi)∠恕皠?chuàng)建Hello MIDlet”前面的選擇,如下圖:
在點(diǎn)下一步,在下面的對話框中選擇CLDC和MIDP的版本,如下圖:
在這里,肯定有人要問:“什么是CLDC?什么MIDP呢?”這是兩個(gè)規(guī)范。CLDC(連接受限設(shè)備配置)定義了我們的手機(jī)應(yīng)該提供什么樣的虛擬機(jī)和什么樣的核心Java類庫,比如我們下面的程序中用到的java.lang.String類,java.io.ByteArrayOutputStream類等等。那么為什么要選擇CLDC1.0而不是1.1呢?那就要看你的手機(jī)了,我的Nokia手機(jī)就只支持CLDC1.0。MIDP(移動信息設(shè)備簡表)位于CLDC基礎(chǔ)之上,為開發(fā)者提供了應(yīng)用程序模型、圖形用戶界面等功能,比如我們下面的程序中用到的javax.microediton.midlet.MIDlet類、javax.microediton.lcdui.Display類,甚至我們以后編寫游戲用到的javax.microedition.lcdui.game.*包中的類,都是MIDP規(guī)范定義的,也就是說,只要我們的手機(jī)滿足這兩個(gè)規(guī)范,我們使用這些類寫的程序就能夠在手機(jī)上正常運(yùn)行。現(xiàn)在最流行的MIDP版本為2.0。大家在為自己的手機(jī)寫程序的時(shí)候,請參考用戶手冊。
點(diǎn)擊完成,我們就創(chuàng)建好了項(xiàng)目。
在項(xiàng)目名稱上面單擊鼠標(biāo)右鍵,在快捷菜單中選擇新建Java包,這一步,可以讓我們創(chuàng)建一個(gè)包來保存我們的程序代碼,如下圖:
下一步,輸入包名:
下一步,當(dāng)然是新建一個(gè)MIDlet了,這里的MIDlet,是一個(gè)繼承自javax.microedition.midlet.MIDlet類的Java類,也就是我們的手機(jī)程序的主程序,好比瀏覽器小程序稱為Applet,而服務(wù)期端程序稱為Servlet,這么一對比,就不難理解MIDlet的概念了。如下圖:
輸入類名,如下圖,在這個(gè)圖中可以看出,我們還可以為我們的程序指定圖標(biāo),圖標(biāo)可以是一個(gè)png格式的圖片文件,我們這里省略,因?yàn)槲覀冞€沒有為我們的程序準(zhǔn)備這樣的資源。
點(diǎn)擊完成,下面就是IDE為我們自動生成的代碼:
這個(gè)自動生成的代碼代表了一個(gè)手機(jī)程序的生命周期,其中的startApp()就相當(dāng)于普通Java程序的main(),而其它兩個(gè)方法,則分別在程序暫停和程序退出的時(shí)候執(zhí)行。我們對該程序進(jìn)行擴(kuò)充,代碼如下:
































































對這段代碼,我做一些簡單的解釋:
1.我們的類implements了CommandListener接口,這個(gè)接口需要我們實(shí)現(xiàn)commandAction方法,而實(shí)現(xiàn)這個(gè)接口和方法的目的,就是為了對手機(jī)的按鍵做出響應(yīng);
2.在這個(gè)程序界面中,我們用到了Form類,在Form中添加了字符串,然后再調(diào)用display.setCurrent方法顯示這個(gè)Form,這里,display代表了手機(jī)的屏幕,而Form是充滿這個(gè)屏幕的一個(gè)用戶控件;
3.這個(gè)程序用定義了一個(gè)Command對象,而通過Form.addCommand方法加入這個(gè)Command對象,這樣,在手機(jī)的菜單條中就會顯示一個(gè)“退出”按鈕,至于顯示在屏幕的左下方還是右下方,那就根據(jù)手機(jī)而不同了,當(dāng)我們點(diǎn)擊這個(gè)按鈕的時(shí)候,就會觸發(fā)CommandListener的commandAction方法,我們通過Form.addCommandListener添加監(jiān)聽器。
在項(xiàng)目的快捷菜單中點(diǎn)擊運(yùn)行項(xiàng)目,如下圖:
下面是運(yùn)行效果:
按下模擬器的啟動鍵,就可以啟動程序,如下圖:
點(diǎn)擊模擬器上的退出鍵,就可以退出程序。
今天就寫到這里了。現(xiàn)在我們得到的,只是一個(gè)能夠在模擬器上運(yùn)行的簡單程序。我們該如何把它弄到我們的手機(jī)上面呢?我們又該如何編寫更加復(fù)雜的用戶界面呢?怎么樣才能編寫游戲呢?且看我慢慢寫來。