- UID
- 872238
|
分析HelloWorld应用程序
上面的这个HelloWorld应用程序具有运行 Palm OS的设备上的 CLDC应用程序的基本特征。当你仔细考察一下这段代码,你会发现许多使用 kjava类库编译应用程序的特性。首先,这个程序扩展了 com.sun.kjava.spotlet类,使用 kjava,一个 spotlet就是任何可以得到焦点(focus)的类,那就是说,从系统中接收事件,比如手写笔的点触。在我们的例子中, 当手写笔点击About和Quit按钮时,HelloWorld应用程序需要响应,因此它需要获得焦点。你的应用程序可以包括任意多的从 spotlet中衍生的类,虽然在任何时间它们中间只有一个能够取得焦点。实际上,应用程序通过调用 register方法使用焦点,我们在 HelloWorld构造程序开始的部分和 dialogDismissed方法中都用了 register。
HelloWorld类实现了 DialogOwner接口。实现 DailogOwner接口的类是用于创建对话框的类。我们的应用程序创建了一个对话框来响应手写笔点击 About按钮的事件,为了实现DialogOwner接口,你的类必须包含一个dialogDismissed成员方法,为了实现 DialogOwner接口,你的类必须包含一个 dialogDismissed成员方法,这个方法在一个对话框被关闭的时间被调用。
HelloWorld构造程序在屏幕上创建三个界面元素:一个文本框和两个按钮。你马上就会发现 kjava和 J2SE AWT的一个重要的差别: kjava没有与 AWT自动布局机制等价的东西。你必须自己编码确定每个界面元素在屏幕上的位置。在我们的程序中,我们把文本框放在(10,10)和(140,130)之间;两个按钮放置在( 75,140)和(125,140)。
每当用户在装置上轻点手写笔时,都要调用HelloWorld的 penDown方法。我们通过调用每个按钮的 pressed方法确定这次点击是否发生在按钮的边界以内,如果按钮的pressed方法返回一个真值,意味着手写笔点击事件发生在按钮边界之内,这个按钮相对应的动作将发生。比如说如果点击了 About按钮,我们通过创建一个新的 Dialog对象创建 About对话框。要是点击了 Quit按钮,我们就终止这个程序。
最后, 当用户关闭对话框时,要调用 HelloWorld的 dialogDismissed方法。在我们的应用程序中,这个方法做的事情就是通过调用 register方法恢复焦点并调用 paint方法来刷新屏幕。
编译
编译一个 CLDC应用程序需要两步操作:首先你必须通过标准的 J2SE编译程序运行它们,不过使用 CLDC类库代替标准的 J2SE类库。然后,使用preverify程序把得到的.class文件转化成 KVM可读的 Java应用程序。
上面的示例程序如下面这样编译:
javac -g:none -classpath %cldc_classpath% -d %temp% HelloWorld.java
preverify -classpath %cldc_classpath% -s %temp% -d . |
一旦编译好后,就可以使用下面的命令来在你的台式机上运行这个程序:
kvm -classpath %cldc_classpath% HelloWorld |
既然这个CLDC应用程序在计算机上可以运行,那么你也可以试着把它转换成Palm可执行文件。
在Palm上运行
为了把一个使用CLDC开发的.class文件转换成在Palm OS设备上可实际运行的文件,你需要使用j2me_cldc-1_0-src-palm_overlay.zip中的许多程序。首先,你必须把你的 .class文件转换成 Palm OS应用程序,所有的 Palm OS应用程序都有扩展名 .prc。通过使用 palm.database.MakePalmApp类把 .class文件转化成 .prc文件,使用下面这个命令行运行我们刚才写好的 HelloWorld.class文件:
java palm.database.MakePalmApp -bootclasspath %cldc_classpath% HelloWorld |
现在,在存放 HelloWorld.class的相同目录就有了 HelloWorld.prc文件。这个文件就是 Palm应用程序。你现在可以使用 Palm OS设备带的安装程序安装这个文件。除了把你的应用程序的.prc文件安装到 Palm OS设备上以外,你还要安装 kvm.prc,kvm.prc是 K虚拟机的一个实现,用于 Palm OS设备。 |
|