作者:Confach 发表于March 24,2006 18:05 pm
版权信息:可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息.
http://www.cnblogs.com/confach/articles/358028.html
[url=]第2[/url]章
编写BlackBerry Java应用程序
[p=19, null, left]应用程序管理 [p=19, null, left]编写一个例程 [p=19, null, left]重用一般代码 [p=19, null, left]使用BlackBerry IDE [p=19, null, left]使用命令行 [p=19, null, left]使用蓝牙开发环境 [p=19, null, left]使用Eclipse开发环境 [p=19, null, left]编程指南
|
[url=]应用程序管理[/url]
[p=19, null, left]当BlackBerry设备启动时,VM加载应用程序管理器,它管理在BlackBerry设备上所有运行的程序。对于其他Java程序,应用程序管理器的功能类似操作系统事件的中心调度员一样。
[p=19, null, left]提供用户界面的应用程序扩展了net.rim.device.api.ui.UiApplication类。这个类为应用程序提供方法来注册事件监听者,管理线程以及UI组件。
[p=19, null, left]没有提供用户界面的应用程序扩展了net.rim.device.api.system.Application类。
[p=19, null, left]BlackBerry应用程序开始于main()函数。当一个程序开始时,它的main()线程调用enterEventDispatcher()来开始处理事件。这个线程运行所有绘图以及事件处理的代码,以及登等待应用程序队列里地事件。
[p=19, null, left]当应用程序管理器接收到一个事件时,它将这个事件拷贝到合适的队列里,这个队列可以允许应用程序管理器指挥消息到特定的程序中。例如,前台的应用程序仅接收用户输入的消息。
[url=]编写一个例程[/url]
[url=]扩展[/url]UiApplication基类
[p=19, null, left]每个提供用户接口的应用程序扩展了UiApplication基类,UiApplication类为应用程序定义了方法来建立一个事件线程,并且显示和维护Screen对象。
[url=]定义[/url] main()
[p=19, null, left]在main()中,为应用程序创建一个新的对象。调用enterEventDispatcher()使应用程序进入事件线程并且开始处理消息。
public static void main(String[] args) { HelloWorld theApp = new HelloWorld(); theApp.enterEventDispatcher();} |
[url=]定义一个构造子[/url]
[p=19, null, left]为你的应用程序定义缺省的构造子。缺省的构造子调用UiApplication.pushScreen()以显示当应用程序启动时出现的屏幕。在本例中,屏幕使一个新的HelloWorldScreen实例,它在下节的代码中定义:
public HelloWorld() { pushScreen(new HelloWorldScreen());} |
[url=]定义[/url]main屏幕
[p=19, null, left]为了定义应用程序UI的主屏幕,扩展MainScreen类。MainScreen类是Screen的子类,它实现了TrackwheelListener和KeyboardListener接口,这些接口接收和响应用户交互。如果你扩展Screen类或者其子类中的一个,你并不是必须实现TrackwheelListener 和KeyboardListener接口。
[p=19, null, left]你的类至少应该重写2个MainScreen的方法:缺省的构造子和onClose().
[p=19, null, left]在这个例子中,构造子调用了MainScreen的构造子。缺省地,MainScreen提供下列特性:
[url=]代码实例[/url]
[p=19, null, left]接下来的例子创建了一个屏幕,它包含了一个富文本域。当富文本域接收到焦点时,菜单保安一个Close菜单项和一个Select上下文菜单项。
[p=19, null, left]
[p=19, null, left]例: HelloWorld.java
[p=19, null, left]/**
[p=19, null, left]
*
HelloWorld.java
[p=19, null, left]
*
Copyright
(C)
2001-2005
Research
In
Motion
Limited.
All
rights
reserved.
[p=19, null, left]
*/
[p=19, null, left]
[p=19, null, left]package com.rim.samples.docs.helloworld;
[p=19, null, left]import net.rim.device.api.ui.*;
[p=19, null, left]import net.rim.device.api.ui.component.*;
[p=19, null, left]import net.rim.device.api.ui.container.*;
[p=19, null, left]import net.rim.device.api.system.*;
[p=19, null, left]import com.rim.samples.docs.resource.*;
[p=19, null, left]
[p=19, null, left]public
class HelloWorld extends UiApplication {
[p=19, null, left]
public
static
void main(String[] args) {
[p=19, null, left]
HelloWorld theApp = new HelloWorld();
[p=19, null, left]
theApp.enterEventDispatcher();
[p=19, null, left]
}
[p=19, null, left]
[p=19, null, left]
public HelloWorld() {
[p=19, null, left]
pushScreen(new HelloWorldScreen());
[p=19, null, left]
}
[p=19, null, left]
}
[p=19, null, left]
[p=19, null, left]
[p=19, null, left]final
class HelloWorldScreen extends MainScreen {
[p=19, null, left]
public HelloWorldScreen() {
[p=19, null, left]
super();
[p=19, null, left]
LabelField title = new LabelField(“HelloWorld Sample”, LabelField.ELLIPSIS
[p=19, null, left]
| LabelField.USE_ALL_WIDTH);
[p=19, null, left]
setTitle(title);
[p=19, null, left]
add(new RichTextField(“Hello World!”));
[p=19, null, left]
}
[p=19, null, left]
[p=19, null, left]
public
boolean onClose() {
[p=19, null, left]
Dialog.alert(“Goodbye!”);
[p=19, null, left]
System.exit(0);
[p=19, null, left]
return
true;
[p=19, null, left]
}
[p=19, null, left]
}
[p=19, null, left]
[url=]重用一般代码[/url]
[p=19, null, left]抽象基类可以使你跨越多个类实现和重用一般功能。每个应用程序可以扩展单个基类。在BlackBerry IDE,加入基类到一个库项目中。为每个应用程序创建一个独立的项目,定义库项目的依赖。
[url=]代码实例[/url]
[p=19, null, left]本指南的例程扩展了BaseApp类,它实现下面的功能:
本文转自www.35java.com