为了让读者更深入的了解我们所使用的样例程序,从而可以修改这个应用开始进一步的学习,下面对样例应用的代码逐行进行解释。
在主用应程序中的第一句是包的声明,如果按本文所描述的方式生成类文件的话,这一句是自动生成的:
package com.bbtest.helloworld;
在package语句后面的是本类所在的包的包名。如果开发人员在其它包新建了类文件,并将本文中的样例代码拷贝到新建的类文件中,则要注意修改这里的包名。
在包声明语句后的是包引入的声明,对于java开发人员也是很熟悉的,作用是本类所使用的一些不在本包里的类。从这三行语句可以发现我们在样例代码中使用了UiApplication, LabelField和MainScreen三个类。这三个类都是BlackBerry API提供的BlackBerry系统类。这几行语句是需要开发人员手工输入的(或者是从样例代码中直接拷贝的,J),系统不会自动生成。如果希望系统自动生成的话,可以在完成本例的main函数和构造函数后点击右键,选择“Source->Organize Imports”由系统自动生成这些import语句。
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;
在import语句后是类声明,按本文描述的方法生成类文件的话, 这一句是自动生成的。该语句表明本类类名为“HelloWorld”,是UiApplication的子类。
public class HelloWorld extends UiApplication {
然后是应用程序的入口函数,main函数的声明,这一句也是自动生成的,其格式和标准的j2se main函数相同
public static void main(String[] args) {
在main函数里面只有两句语句,就是新建一个本类的实例,然后调用该实例的enterEventDispatcher函数。 enterEventDispatcher函数其实是该类的父类,也就是UiApplication的函数,所以并不需要开发人员实现。这两句语句对于一般的BlackBerry应用程序都是需要的,初学者可以将它们作为定式。
HelloWorld _app= new HelloWorld();
_app.enterEventDispatcher();
在main函数后就是HelloWorld类的构建函数,因为在main方法里建立了HelloWorld类的实例,会调用HelloWorld类的构建函数,所认我们可以认为该函数才是应用程序的入口。
在HelloWorld类的构建函数中我们新建了一个MainScreen类的实例。如上所述MainScreen类是BlackBerry API中提供的系统类,该类主要用于一般应用程序的主屏幕,该类中已经实现了一些BlackBerry应用常用的基本方法,如果菜单键响应等,比较适合用于没有特殊要求的BlackBerry应用程序。
在新建MainScreen实例后,我们新建了一个LabelField的实例并调用MainScreen类实例的add函数将LabelField实例添加到MainScrren的实例中。LabelField是一个用于显示文本不可编辑的域。
最后, 我们调用this.pushScreen函数将新建的MainScreen实例显示出来。这里的this就是指HelloWorld的实例,因为HelloWorld继承了UiApplication类,所以可以通过HelloWorld实例调用UiApplication类中已经定义好的pushScreen函数。
public HelloWorld()
{
MainScreen screen = new MainScreen();
LabelField label = new LabelField("Hello World!");
screen.add(label);
this.pushScreen(screen);
}
}