JAVAプログラミング講座
宇宙のJAVAさん
- 第1話 -
JDK1.1ニューイベントモデルでのイベントの受け取り方(健全)
< 一年前 >
JAVAが最終防衛ライン突破! 迎撃、間に合いません!
OS不安定により、システムの安定率 65%に減少!
・・・
これまでか・・・
レ、レーダに捕捉! JAVAです!
(どよ〜ん)
く・・・ 仕方ない。 みんなは逃げなさい。
先生!
どうするみゃ?
私が持てる全てのプログラミング技術を駆使して、奴に負荷をかけよう!
多重スレッドだ!
とぉ!

先生ぇえええええええええええええ!
第2部の壮絶な死闘とともに、このコーナーの更新も止まった。
こうしてJAVAとともに宇宙(そら)のチリとなったクマ先生。
しかし、プログラミング魂がある限り、クマ先生はみんなの心の中に生きつづけるだろう・・・
< そして、現在 >
JAVA接近中? 間違いないのかみゃ?
コンピュータの予想では、99.954%の確率でJAVAだも〜
どうするみゃ?
こんな時に「クマ先生」がいてくれたらな・・・
大体、第2部の最後でJAVAとの死闘なんてあったかも?
いつの間に先生が宇宙のチリになっているだも? 設定がいい加減だも〜
なにせ爆裂健だからね・・・ 作ってるのが・・・
しかしどうするみゃ?
ふははははは・・・・

この声は!
バーン!

クマ先生!
みんな、久しぶり。 1年半ぶりぐらいかな?
生きてたのかみゃ? クマ先生!
Gストーンの力により、「エボリューダー・クマ」としてよみがえったんだ!
これからは、きらめく稲妻
エボリューダー・クマ と呼んでくれたまえ!
しかし、全然変わっていない気がするも〜
あまいな、うし君。 下の写真が昔の私だ!
![]() |
そして私が、きらめく稲妻
エボリューダー・クマ だ!
同じに見えるみゃ?
「ハナ」をよく見たまえ! エボリューダー・クマ
はハナが3ドットほど光っているだろう。
ザナドゥのポーション並に、わかりずらいのですが・・・
と、とにかく! 再び講座を始めます。

はーい!
さて、新シリーズ第1話は、「JAVAニューイベントモデル」についての勉強です。
第一部の
STORY1 で勉強した「メッセージハンドラ(イベント駆動)」は覚えていますか?
マウスを押したり、再作画の時に、決められた関数が実行される事だも〜
そうです、たとえばマウスが押された時は
関数
public boolean mouseDown(Event e, int x, int y) { // マウスダウン
が、 実行されます。
ところが、JDK1.1以降、イベント駆動のやり方が少し変わりました。
もちろん昔のイベント駆動のやり方も使えます。
ただ注意点は、昔のイベント処理のやり方と新しいイベント処理のやり方を1つのソースの中で同時に使うことは出来ません。
友人から「新しいイベント処理のやり方を紹介しろ!」と言われたので、JDK1.1イベント処理について勉強しましょう。
そんな訳で「新しいイベント処理の雛型」をダウンロードしてください。
javabase11.lzh
(2000.09.15.公開)
javabase11.lzh という名前でLHA圧縮されてますので、c:ドライブに sora というフォルダを作ってそこに展開してください。
第一部の時と、まったくいっしょにゃ
JavaBase11.java
というファイルがアプレット雛型ソースファイルです。
これにプログラムを書き込み、コンパイルして sample.html で動かします。
やり方を忘れてしまった人は、第一部を読み直してください。
JavaBase11t.java
と sample_t.html というファイルもあるにゃ??
それらは、「スレッドプログラム用の雛型ソース」です。
スレッドプログラムを作るときは、こちらを使います。
あれ? 「マウスダウン関数」とか「マウスアップ関数」が、自分で新たに定義されたクラスの中に入っているも〜
そうです。 簡単に言うとプログラムする場所が変わりました。
あれ? コンパイルしたら「JavaBase11.class」の他に、「JavaBase11$MouseAction.class」というファイルもできたにゃ!
そのとおり。 新しいイベントモデルでは、イベントの種類ごとに複数のクラスを作ります。
実行する時は、それら複数のクラスが全部無いと動きません。
ちなみにこの雛型は「マウス処理イベント」だけが追加されています。
よって、、「JavaBase11$MouseAction.class」というのは、マウス処理プログラム部分です。
本格的なプログラムでは、いろいろな種類のイベントを追加するので、コンパイルすると大量のクラスファイルが出来ます。
昔のイベントモデルは、コンパイルすると1つのクラスファイルしか作らなかったのに・・・
これって不便なんじゃないかみゃ?
なんで、新しいイベントモデルになったのかみゃ?
カッコイイからだよ!
・・・
簡単に言うと、イベント処理がより洗練されたんです。
私はJAVAでゲームを作ることが多いから、マウスイベントぐらいしか使わないのですが、本格的な業務ソフトなどを作るときに、ボタンやテキストフィールドなどのコンポーネントを利用します。
昔のイベントモデルでは、ボタンなどのコンポーネントのイベントが発生すると、action() 関数が実行されていました。
で、action() 関数の中で、なんのコンポーネントが実行されたのかチェックして、処理を分岐させていたんです。
つまり(マウス処理以外の)全てのイベント処理プログラムを action() に集まって、ごじゃごじゃしていたわけです。
これは、(プログラム的に)非常に美しくない!
ついでにプログラムが複雑になると、わかりづらい!
そんなわけで、悪の SUN王国が新しいイベント処理モデルをJDK1.1に追加したわけです。
新しいイベントモデルでは、すべてのイベント処理が登録制になったんですよ。
いままでは「MouseDown()」 とプログラムすれば、マウスを押した時にこの関数が呼ばれ実行されました。
新しいイベントモデルはイベントの種類ごとに Listener インターフェイスを登録(実装)してイベントを使うわけです。
みゃ? みゃ? みゃ? よくわからんみゃ?
具体的に説明しましょう。 例えば「ボタンが2つあるプログラム」をつくるとします。
昔のイベント処理では、ボタンが押されたら、どのボタンが押されても action() が実行されます。
新しいイベント処理では、ボタンごとに実行されるプログラムを設定&登録します。
なるほど、すべてのボタン(=コンポーネント)が個別に実行関数持ってるわけも〜
わかったようみゃ・・・ わからないようにゃ・・・
まぁ、いろいろ考える必要はありません!
プログラムを書き込む場所が変わっただけです。
いいのかも〜 そんないい加減で・・・
クマですから・・・
第一部 STORY3 で紹介した「マウスをクリックすると文字が出るプログラム」は覚えていますか?
それを新しいイベント処理のプログラムにすると、こうなります!
![]()
どうです? プログラミングする場所が変わっているだけでしょ・・・
プログラムの内容は、まったく同じになってます。
結局、どっちのモデルが良いんだみゃ?
まぁ、普通に考えれば新しい方がいいのですが、ちょっとしたプログラムを個人で作成する場合は古いイベントモデルで作った方が作りやすいです。
本格的なプログラムの場合は新しい方かな・・・ やはり。
Visual J++ や Visual Cafe などの市販の開発ツールでは、当然新しい方を使っています。
まぁ、どっちで覚えても大差ありません。気楽に行きましょう。
いちおうこのJAVA講座では、今後は新しいイベントモデルで話を進めていきます(予定)。
では、また次回お会いしましょう!

はーい!
- 第2話につづく -
|
宇宙のJAVAさん (C) BakuretuKen 2000 |