スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

J2ME(S!アプリ)開発日記 その3

CLDC 1.1だと、1.0よりは充実している。しかし、J2SE, J2EEを使っているとどうしても不足している。ソートも自前で作らなくてはいけなくて、Comparatorなどはない。昔勉強していた頃のQuickSortのソースを持ってきて当てたりした。Vector#toArray()メソッドもない。

CLDCは1.0でもよかったが、MIDPでは、やはりリスト表示の際、ラジオボタンの羅列だと長くなってしまうので、プルダウン(POPUP)が使いたかったし、カスタムアイテムやボタンも使いたかったので、MIDP2.0にする必要があり、結局MEXAエミュレータを使うようにした。

また、最初の画面ぐらいは色をつけたいと思い、Canvasクラスを使っていたが、文章を載せたいときに、行の折り返しとか全部自分で指定しないといけない。
その点、Formクラスを使うと便利で、長い文章をappend()しても、勝手に折り返してくれるし、画面に収まりきらない場合、下ボタンを押せば、下にスクロールして見ることができる。
なので、結局、画面はすべてFormクラスで統一し、アプリの起動はMidletクラスで行うが、そのあとはほとんどFormクラスである。最初、Listクラスも使っていたが、メニュー表示するのであれば、Commandクラスを使った方が、数字キーでメニューの項目を選択するので、Listクラスは使わなくなった。

MIDP2.0でボタンオブジェクトが使えることがわかったので、PC版と同じ画面構成にしようかと思ったがやめにした。なぜかというと、携帯ではマウスが使えない。マウスが使えれば、ボタンへ直でアクセスできるが、携帯では上下左右キーで移動するしかなく、その間にボタンがたくさんあれば、キーを押下しなければならない回数は多い。だからあまりボタンの利点はない。
なので一部の確認画面でしか使わなかった。むしろ、ソフトキーを押してメニューを表示させ、そこで数字キーを押したほうが、押下数は少なくて済む。

こうしてUIを整え、ほぼ普通に動作するようになったものの、やはりキー押下数は少なくしたい。ショートカットはほしい。
しかし、CanvasではkeyPressedイベントがあって、数字キーにショートカットキーを割り当てることができるものの、Formでは拾うことができない。
いろいろ調べているうちに、CustomItemを使うと、keyPressedイベントを拾えることがわかった。しかし条件は、そのカスタムアイテムにフォーカスが当たっているときだけである。
最初この案を断念しかけたが、実は結構使える。
Form上のItemがそのカスタムアイテムしかないとき、フォーカスはそのカスタムアイテムに常に当たっている。
ポイントは、Form上にアイテムをappendしていくとき、フォーカスを当てられるアイテムがそのカスタムアイテムだけのときは、最後に、appendする。逆に、他にフォーカスの当たるボタンなどのItemがあるときは、最初にappendする。

今回作ったカスタムアイテムは全くのダミーでCustomItemを継承し、コンストラクタで" "(スペース)だけを指定した。目的がショートカットだけなので、必要なFormクラスのインナークラスとしてShortCutクラスを作り、implementする必要があるメソッドをダミーでインプリメントした。

こんなやり方で果たしてショートカットが使えるのか不安だったが、きちんと動作した。
ただ面倒なので全画面でするのはやめて、一部のよく使いそうな画面のみにした。

関連記事
スポンサーサイト

コメント

非公開コメント

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。