第2章BlackBerry Javaアプリケーションの作成


作者:Confach March 24,2006 18:05 pmに発表しました.  著作権情報:任意に転載してもいいです.転載する時は必ずハイパーリンクで文章元の出典と著者情報を明示してください.  http://www.cnblogs.com/confach/articles/358028.html
 
2番目章 BlackBerry Javaアプリケーションを作成する
アプリケーション管理作成のルーチン再利用の一般コードブラックベリー IDEコマンドラインを使用してBluetooth開発環境を利用したEclipse開発環境プログラミングガイド
アプリケーション管理
ブラックベリーデバイスが起動すると、VMは、ブラックベリーデバイス上で動作するすべてのプログラムを管理するアプリケーションマネージャをローディングする.他のJavaプログラムに対しては、アプリケーションマネージャの機能は、オペレーティングシステムイベントのセンタースケジューラと同様である.
ユーザーインターフェースを提供するアプリケーションは、net.rim.device.appi.ui.UiAppliationクラスを拡張します.このクラスは、イベントの傍受者、管理スレッド、およびUIコンポーネントを登録するためのアプリケーション提供方法を提供する.
ユーザーインターフェースを提供していないアプリケーションは、net.rim.device.appi.system.Appplicationクラスを拡張しています.
ブラックベリーアプリケーションは、main関数から開始される.一つのプログラムが開始されると、そのmain()スレッドはイベントイベントを起動してイベントを処理します.このスレッドは、すべての図形描画とイベント処理のコードを実行し、アプリケーションのキューにログオンします.
アプリケーションマネージャがイベントを受信すると、このイベントを適切なキューにコピーし、このキューはアプリケーションマネージャが特定のプログラムにメッセージを指揮することを許可する.例えば、フロントのアプリケーションは、ユーザ入力のメッセージのみを受信する.
ルーチンを作成する
拡張 UiAppliationベースクラス
各ユーザインタフェースを提供するアプリケーションはUiAppliationベースを拡張し、UiAppliationクラスはアプリケーションのための方法を定義してイベントスレッドを作成し、Screenオブジェクトを表示して維持する.
定義 main()
main()では、アプリケーションのために新しいオブジェクトを作成します.イベントイベントDispactch()を呼び出してイベントスレッドにアプリケーションを入れ、メッセージの処理を開始します.
public static void main(String[] args) {
  HelloWorld theApp = new HelloWorld();
  theApp.enterEventDispatcher();
}
構造子を定義
あなたのアプリケーションのためのデフォルトの構造を定義します.デフォルトの構成子は、アプリケーションが起動したときに表示される画面を表示するためにUiAppliation.push Sreenを呼び出します.この例では、スクリーンは、次のセクションのコードで定義される新しいハローワールドScreenの例を示しています.
public HelloWorld() {
  pushScreen(new HelloWorldScreen());
} 
定義 main画面
アプリケーションUIのメイン画面を定義するために、MainScreenクラスを拡張します.MainScreenクラスはScreenのサブクラスで、TrackwheelListenerとKeyboardListenerインターフェースを実現しています.これらのインターフェースはユーザーのインタラクションを受信し、応答します.Screen類またはそのサブクラスの一つを広げると、TrackwheelListenerを実現しなければなりません. Keyboard Listenerとインターフェースします.
あなたのクラスは少なくとも2つのMainScreenの方法を書き換えるべきです.
この例では、構造子は、MainScreenの構造子を呼び出している.デフォルトでは、MainScreenは以下の特性を提供します.
Closeメニューのデフォルトメニューです.Closeをクリックするか、またはEscapeを押すと、デフォルトはクローズ動作です.ユーザーがCloseメニュー項目をクリックしたり、Escapeボタンを押したりして、OloClose()を書き換えたり、ダイアログのヒントを表示します.
RichTextField一つ の例では、読み取り専用のテキスト領域に焦点を当てることができます. UIコンポーネントの画面への追加に関する情報を得るために、40ページの「スクリーンナビゲーションの提供」を参照してください.
Selectメニュー項目のコンテキストメニュー? より多くの情報を得るために、60ページの「カスタムコンテキストメニューを作成する」を参照してください.
コードの例
次の例は、テキスト領域が含まれている画面を作成します.テキスト領域がフォーカスを受信すると、メニューセキュリティのCloseメニュー項目とSelectコンテキストメニュー項目があります.
例:ハローワールド.java
/**
 *  ハロルド.java
 *  Copyright (C) 2001-200 リサーチ In Motion Limited. All ライツ reerved.
 */
 
package comple.samples.docs.hellowworld;
import net.rim.device.api.ui.*;
import net.rim.device.appi.ui.com onent.*;
import net.rim.device.appi.ui.com.ainer.*;
import net.rim.device.api.system.*;
import comple.samples.docs.resource.*;
 
public クラス ハロルド extens UiApplication{
    public static void main(String[]args){
       Hello World theApp= new ハローワールド()
       theApp.enterEvent Dispactch();
       }
   
    public ハロルド(){
       push Sreen(new Hello World Screen();
       }
    }
 
 
final クラス Hello World Screen extens MainScreen{
    public Hello World Screen(){
       スーパー
        Label Field title= new Label Field(「Hello World Sample」、Label Field.ELIPSIS
                                         | Label Field.USEUALLuWIDH;
       setTitle;
       add(new RichTextField(「Hello World!」);
       }
      
    public bollan OClose(){
       Dialog.alert(「Goodbye!」)
       System.exit(0)
       return true;
       }
    }
一般コードを再利用
抽象的なベースクラスは、複数のクラスを越えて一般的な機能を実現し、再利用することができます.各アプリケーションは、単一のベースクラスを拡張することができます.ブラックベリーでは、 IDEは、ベースクラスをライブラリ項目に追加します.個々のアプリケーションのための独立したプロジェクトを作成し、ライブラリ項目の依存性を定義します.
コードの例
本ガイドのルーチンはBaseAppクラスを拡張しています.以下の機能を実現します.
拡張UiAppleクラスKeyListenerとTrackwheelListenerインターフェースを実現する変数を定義します.たとえば、一般的なメニュー項目アプリケーションメニューを作成する方法を定義します.メニュー選択のための定義方法抽象的な方法を定義してプログラムを終了します.
 
例:BaseApp.java
/*
 * * BaseApp.java
 * * Copyright(C)2001-2055.In Motion Limited.All rights reerved.
 * */
 
 
package comple.samples.docs.baseap;
import net.rim.device.api.i 18 n.*;
import net.rim.device.api.system.*;
import net.rim.device.appi.ui.com.ainer.*;
import net.rim.device.api.ui.*;
import net.rim.device.appi.ui.com onent.*;
import comple.samples.docs.resource.*;
 
public abstract;padding