什么是J2Me,这里我就不解释了。这里所讲的东西,就是怎么在PC上写J2Me程序,编译生成Jar文件在手机上运行。
为什么要写着东西呢?因为网上的教程动不动就是一堆的概念和理论,看得头都大了,却在电脑里连一个自己的程序都不会写,看NetBeans的Hellp World,却发现那是最优秀的程序员们写的例子,一点都不简单,初学者没有一定的恒心和毅力,很难等到看懂的那一天!
废话真多!言归正传。我的编程环境Window XP上安装了jdk-6u12-nb-6_5-windows-ml.exe,sun_java_wireless_toolkit-2_5-ml-windows.exe,netbeans-6.5-ml-windows.exe。这些自己上Sun公司网站上折腾吧,也不能把事情搞得太简单了,初学者还是要自己弄明白怎么把平台搭建起来。
打开NetBeans后,选择新建项目,然后选Java Me,不要选样例哦。选Mobile应用程序,然后下一步。别勾设置为主项目,也别勾创建Hello MIDlet,然后点完成,不要下一步了哦!(也不知道是不是Bug,你下一步去配置那些东西,一会NetBeans会停住)
好了,然后新建文件,选MIDP,新建一个MIDlet,就用缺省的名字,如果你喜欢,也可以给个别的名字,就是多些小麻烦罢了。
点击完成后,你可以先看看NetBeans自动生成的几句简单代码。然后你就可以照下面改代码了。里面的代码就是把NetBeans的Hello World样里的代码选一些加了进去。够简单吧!
NetBeans的Hello World 其实也很简单,就是盒子套盒子弄得挺多了!我这里也套了不少盒子。没有办法,这就是所谓的数据结构,优秀的代码应该是这样子的,什么面向对象编程呀,类呀这类的!如果你对这一套很熟悉,那么就很容易,否则的话,你会觉得很头晕!
一层套一层,以后要慢慢熟悉这样的思维,所以我也不把它完全剥开了。
要让生成的Jar在手机上运行,你还要根据你的机器去运行-〉配置项目配置-〉定制...那里去改改。程序在手机上显示一个Form,名称是Welcome;Form里面有个StringItem,标题是Hello,内容是Hello, World!
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
* @author netscaner
*/
public class Midlet extends MIDlet {
private Form showForm;//定义一个Form
private StringItem stringItem;//一个StringItem
//给这个StringItem装东西,做个StringItem
public StringItem getStringItem() {
if (stringItem == null) {
stringItem = new StringItem("Hello", "Hello, World!");
}
return stringItem;
}
//给这个Form装东西,做个Form
public Form getForm() {
if (showForm == null) {
showForm = new Form("Welcome", new Item[] { getStringItem() });
}
return showForm;
}
//做个启动MIDlet的过程
public void startMIDlet() {
switchDisplayable(null, getForm());//用switchDisplayable把做好的Form显示出来
}
//做个switchDisplayable过程来显示东西
public void switchDisplayable(Alert alert, Displayable nextDisplayable) {
Display display = getDisplay();
if (alert == null) {
display.setCurrent(nextDisplayable);
} else {
display.setCurrent(alert, nextDisplayable);
}
}
//做个显示东西的过程
public Display getDisplay () {
return Display.getDisplay(this);
}
public void startApp() throws MIDletStateChangeException {
startMIDlet ();//调用启动MIDlet的过程
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}