JavaプログラミングU

12回目 アプレット 課題

確認○×問題

  1. アプレットはWebブラウザ上で動作するJavaプログラムである
  2. 一般にアプレットはアプリケーションがもつmain()メソッドを持たない
  3. アプレットのクラスを作成するにはクラスAppletを拡張すればよい
  4. アプレットの画面を描画するにはAppletクラスから継承されるstart()メソッドをオーバーライドする
  5. クラスGraphicsは線や円などを描画するメソッドをもつ
  6. マウスのイベント処理はMouseListenerインタフェースを実装して処理を記述する
  7. Appletクラスから継承されるinit()メソッドはアプレットの初期化のため最初に1回だけ実行される
  8. Appletクラスから継承されるstart()やstop()メソッドをオーバーライドするとアプレットの開始や停止などの動作に応じた処理が実現できる
■難易度★☆☆
課題1 次のようにマウスのカーソルに同期してメッセージを表示するアプレットを作成しなさい。

イベントメッセージ
マウスをクリックしたクリックされました
マウスがアプレット上に入ったアプレット上に入りました
マウスがアプレットから出たアプレットから出ました
マウスのボタンを押したボタンが押されました
マウスのボタンをはなしたボタンが離されました

完成例:

■難易度★★☆
課題2 星の画像がマウスカーソルを追従するアプレットを作成しなさい。星の図はここからダウンロードしてください。

ヒント:
MouseListenerの変わりにMouseMotionListenerを用いなさい(教書の503ページのコーヒーブレイクの欄を参照)。

完成例:

■難易度★★★
課題3 色の異なる複数の星の画像がマウスカーソルを追従するアプレットを作成しなさい。星の図は次から星(黄)星(赤)星(緑)からダウンロードしてください。

ヒント:
各星の座標を保持するために配列を用いなさい。マウスが動くたびに配列の値を1つ後方へシフトし、配列の先頭に現在のマウスカーソルの値をコピーすればよい。

完成例:

注 意:
デモでは星のちらつきが気になりますが、これは画面の描画にシングルバッファを用いているためです。シングルバッファは画面の表示に1枚の画用紙を使う方式です。画用紙のクリアと描画を交互に行うため、繰返し高速に描画が行われる場合にチラつきが発生します。画用紙を2枚用いる方式をダブルバッファといいます。1枚は表示用でもう1枚は描画用と使い分けます。描画用の画用紙にクリアと描画を行います。描画が終わると2枚を入れ替えて描画の終了した画用紙を表示します。これを繰り返します。ダブルバッファ方式ではスムーズな描画効果を得ることができます。以下のデモで違いを比べてみましょう。興味ある方は是非調べてみましょう!

完成例(ダブルバッファ):

■難易度★★☆
課題4 マウスをクリックした場所にクロスヘア(照準マーク)を表示するアプレットを作成しなさい。

完成例:

■難易度★★★
課題5 2つのボタンを配置し、ボタンが押されたらそのボタンのラベルを●に、他方のラベルを○にするアプレットを作成しなさい。

ヒント:
ButtonクラスのsetActionCommand()メソッド、ActionEventクラスのgetActionCommand()メソッドの機能をWebで調べて、うまく活用してみよう。

完成例:

■難易度★★★
課題6 血液型が選択できるチョイスを配置し、選択されたらその血液型を表示するアプレットを作成しなさい。

ヒント:
ChoiceクラスのメンバをWebで調べて、うまく活用してみよう。

完成例: