libro
www.tuyano.com
iアプリ・プログラミング入門

Panelを極めよう! (2/8)

作成:2009-12-29 19:13
更新:2009-12-29 19:13

■ComponentListenerについて

Buttonを使う場合、あわせて理解しておかなければならないのが「ComponentListener」です。このComponentListenerは、コンポーネントで発生したイベントを処理するためのものです。iアプリのコンポーネントでは、以下のような操作を行うと、コンポーネントのイベントが発生します。

ボタンをクリックしたとき。
選択リストで何かの項目を選択したとき。
テキストボックスでテキストを書き換えたとき。

これらの操作を行うと、イベントが発生し、Panelに組み込まれたComponentListenerのメソッドが呼び出されます。

ComponentListenerの組み込みは、Panelに用意されている「setComponentListener」を使って行います。これで、引数に指定したインスタンスがPanelに設定され、コンポーネント関係のイベントが発生したらそのインスタンスで処理が実行されるようになります。

ComponentListenerをimplementsしたクラスでは、「componentAction」というメソッドをオーバーライドしなければいけません。これは、コンポーネントでイベントが発生すると呼び出されるメソッドで、3つの引数を持っています。これらの引数を使い、どのコンポーネントでどの種類のイベントが発生したかをチェックすることができます。

このcomponentActionメソッドの基本的な処理の仕方を整理すると以下のリストのようになるでしょう。

componentActionでは、イベントが発生したコンポーネントと、イベントの種類を示すint値、そしてイベントと一緒に送られてくるパラメータ情報が引数として渡されます。イベントの種類は、ComponentListenerに用意されているクラスフィールドを使ってチェックします。ボタンクリックならBUTTON_PRESSED、リストの選択ならSELECTION_CHANGED、テキストの変更ならTEXT_CHANGEDの値となります。

どのイベントが発生したかチェックしたら、後は発生したコンポーネントが何かをチェックし、それぞれに応じて処理を用意するわけです。AWTなどのようにコンポーネントごとにイベントリスナーを組み込むことができないので、このようにメソッド内で細かな分岐処理をしないといけません。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※componentActionの基本的な処理の形
public void componentAction(Component source, int type, int param) {
    switch(type){
    case ComponentListener.BUTTON_PRESSED:
        if (source == コンポーネント){
            ……そのコンポーネントでの処理……
        }
        ……必要なだけifを用意する……
        break;

    case ComponentListener.SELECTION_CHANGED:
        if (source == コンポーネント){
            ……そのコンポーネントでの処理……
        }
        break;
        ……必要なだけifを用意する……

    case ComponentListener.TEXT_CHANGED:
        if (source == コンポーネント){
            ……そのコンポーネントでの処理……
        }
        break;
        ……必要なだけifを用意する……
    }
}
※関連コンテンツ

「iアプリ・プログラミング入門」に戻る