首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > BlackBerry >

第2章 编纂BlackBerry Java应用程序

2012-09-07 
第2章 编写BlackBerry Java应用程序作者:Confach?发表于March 24,2006 18:05 pm?版权信息:可以任意转载,

第2章 编写BlackBerry Java应用程序

作者:Confach?发表于March 24,2006 18:05 pm?
版权信息:可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息.?
http://www.cnblogs.com/confach/articles/358028.html

?

第2章?编写BlackBerry Java应用程序

应用程序管理

编写一个例程

重用一般代码

使用BlackBerry?IDE

使用命令行

使用蓝牙开发环境

使用Eclipse开发环境

编程指南

应用程序管理

当BlackBerry设备启动时,VM加载应用程序管理器,它管理在BlackBerry设备上所有运行的程序。对于其他Java程序,应用程序管理器的功能类似操作系统事件的中心调度员一样。

提供用户界面的应用程序扩展了net.rim.device.api.ui.UiApplication类。这个类为应用程序提供方法来注册事件监听者,管理线程以及UI组件。

没有提供用户界面的应用程序扩展了net.rim.device.api.system.Application类。

BlackBerry应用程序开始于main()函数。当一个程序开始时,它的main()线程调用enterEventDispatcher()来开始处理事件。这个线程运行所有绘图以及事件处理的代码,以及登等待应用程序队列里地事件。

当应用程序管理器接收到一个事件时,它将这个事件拷贝到合适的队列里,这个队列可以允许应用程序管理器指挥消息到特定的程序中。例如,前台的应用程序仅接收用户输入的消息。

编写一个例程

扩展UiApplication基类

每个提供用户接口的应用程序扩展了UiApplication基类,UiApplication类为应用程序定义了方法来建立一个事件线程,并且显示和维护Screen对象。

定义?main()

在main()中,为应用程序创建一个新的对象。调用enterEventDispatcher()使应用程序进入事件线程并且开始处理消息。

public static void main(String[] args) {
? HelloWorld theApp = new HelloWorld();
? theApp.enterEventDispatcher();
}

定义一个构造子

为你的应用程序定义缺省的构造子。缺省的构造子调用UiApplication.pushScreen()以显示当应用程序启动时出现的屏幕。在本例中,屏幕使一个新的HelloWorldScreen实例,它在下节的代码中定义:

public HelloWorld() {
? pushScreen(new HelloWorldScreen());
} 

定义main屏幕

为了定义应用程序UI的主屏幕,扩展MainScreen类。MainScreen类是Screen的子类,它实现了TrackwheelListener和KeyboardListener接口,这些接口接收和响应用户交互。如果你扩展Screen类或者其子类中的一个,你并不是必须实现TrackwheelListener?和KeyboardListener接口。

你的类至少应该重写2个MainScreen的方法:缺省的构造子和onClose().

在这个例子中,构造子调用了MainScreen的构造子。缺省地,MainScreen提供下列特性:

  • 由一个Close菜单项的缺省菜单。
  • 当你点击Close或者按Escape时,缺省的是关闭动作。为了提供客户定制行为,例如显示一个对话框提示,当用户点击Close菜单项或者按Escape按钮,重写onClose().
  • 一个RichTextField?的实例,一个可以接收焦点的只读富文本域?为了得到更多关于增加UI组件到屏幕中的信息,参看40页的“提供屏幕导航
  • 一个Select菜单项的上下文菜单??为了得到更多信息,参看60页的“创建定制的上下文菜单“

    代码实例

    接下来的例子创建了一个屏幕,它包含了一个富文本域。当富文本域接收到焦点时,菜单保安一个Close菜单项和一个Select上下文菜单项。

    第2章 编纂BlackBerry Java应用程序

    例: HelloWorld.java

    /**

    ?*??HelloWorld.java

    ?*??Copyright?(C)?2001-2005?Research?In?Motion?Limited.?All?rights?reserved.

    ?*/

    ?

    package?com.rim.samples.docs.helloworld;

    import?net.rim.device.api.ui.*;

    import?net.rim.device.api.ui.component.*;

    import?net.rim.device.api.ui.container.*;

    import?net.rim.device.api.system.*;

    import?com.rim.samples.docs.resource.*;

    ?

    public?class?HelloWorld?extends?UiApplication {

    ????public?static?void?main(String[] args) {

    ???????HelloWorld theApp =?new?HelloWorld();

    ???????theApp.enterEventDispatcher();

    ???????}

    ???

    ????public?HelloWorld() {

    ???????pushScreen(new?HelloWorldScreen());

    ???????}

    ????}

    ?

    ?

    final?class?HelloWorldScreen?extends?MainScreen {

    ????public?HelloWorldScreen() {

    ???????super();

    ????????LabelField title =?new?LabelField(“HelloWorld Sample”, LabelField.ELLIPSIS

    ?????????????????????????????????????????| LabelField.USE_ALL_WIDTH);

    ???????setTitle(title);

    ???????add(new?RichTextField(“Hello World!”));

    ???????}

    ??????

    ????public?boolean?onClose() {

    ???????Dialog.alert(“Goodbye!”);

    ???????System.exit(0);

    ???????return?true;

    ???????}

    ????}

    第2章 编纂BlackBerry Java应用程序

    重用一般代码

    抽象基类可以使你跨越多个类实现和重用一般功能。每个应用程序可以扩展单个基类。在BlackBerry?IDE,加入基类到一个库项目中。为每个应用程序创建一个独立的项目,定义库项目的依赖。

    代码实例

    本指南的例程扩展了BaseApp类,它实现下面的功能:

    • 扩展UiApplication类
    • 实现KeyListener和TrackwheelListener接口
    • 定义变量,例如一般的菜单项
    • 定义一个方法创建应用程序菜单。
    • 为菜单选择定义一个方法
    • 定义一个抽象方法退出程序



      ?

      例: BaseApp.java

      /*

      ?* * BaseApp.java

      ?* * Copyright (C) 2001-2005 Research In Motion Limited. All rights reserved.

      ?* */

      ?

      ?

      package?com.rim.samples.docs.baseapp;

      import?net.rim.device.api.i18n.*;

      import?net.rim.device.api.system.*;

      import?net.rim.device.api.ui.container.*;

      import?net.rim.device.api.ui.*;

      import?net.rim.device.api.ui.component.*;

      import?com.rim.samples.docs.resource.*;

      ?

      public?abstract; padding

热点排行