test.addMouseListener(test);を追加します。[#g86f7ead]-以下のファイルをダウンロードしてください。http://siio.jp/lecture/Sounds/Ping.aiff(他にも、Basso.aiffFrog.aiffHero.aiffPop.aiffSubmarine.aiffBlow.aiffFunk.aiffMorse.aiffPurr.aiffTink.aiffBottle.aiffGlass.aiffPing.aiffSosumi.aiffを置いておきました)これを再生するプログラムを作ってみましょう。}http://gyazo.com/12d1f047af8d4f87f7199c8a7db66080.png-マルチスレッド化する上記のプログラムでは、main()で、frame.init()したあと、このメソッドで無限にアニメーション書き換えを行うことになります。二度とmain()には戻ってきません。(以下で示した、メニューは、また別のスレッドで動くので、このままでも動きます)アニメーションだけをするなら、これでも良いのですが、他にも仕事をしたい場合には難しいですし、やれないことはないですが、タイミングを計るのが難しいです。いうことで、アニメーションする部分は、別のスレッドにして、そちらに任せてしまうのが通常です。以下のように、別のインスタンスを別スレッドで動かします。別スレッドで動かすインスタンスを作るために、Animatorという名前のクラスを用意しました。別スレッドで動かすためには、Runnableをimplementする必要があります。ここで必須のrunというメソッドが、裏で実行されるので、そこに、上記のプログラムのアニメーション描画部分をそっくり移動させます。gの情報を伝えておく必要があるので、それを設定するメソッドも作りました。アニメーションしつつ、main()の方で数字を表示しています。Performedでメニューからのイベントを受け取れば良いです。上のアニメーションのようなアニメーション以外何もできない手抜きアニメーションでも、メニューは動いてくれます。-余力があれば、ボールが当たったら音が出るようにしてみよう。listenerをanimatorにしました。メニューを作るところがながいので、メソッドに分けました。}-ボールの色と早さをメニューで指定する(解答編)上記のプログラムにメニューを追加して、ボールの色と速さをメニューで指定するようにしました。Listenerは、別スレッドで動いているAnimatorクラスのインスタンスとしました。[#u99ec852]アニメーションの途中で、ボールがちらつくことがあります。ボールの場所を矩形で消して、新しいボールを描いているので、その途中の作業が見えてしまうからです。これを無くすには、ダブルバッファの手法を用います。描画が終わったところで、一気に更新する方法です。ダブルバッファの手法は、授業の最終課題である「お絵かきプログラム」のところで説明します。[#y4c3a992]JPanelのサブクラスを作りました。こちらはメインのプログラム。JFrameのサブクラスで、これに上記のJPanelのサブクラスを貼付けます。リスナーになっているので、こちらでマウスなどのイベントを受け取ります。Applicationを作ってました。これはjavaコマンドから実行するアプリケーションでした。Appletという実行形式式があります。Appletは、webページなどで動かすことができます。webサービスでクライアント側でアプリケーションを動かすために開発されました。AppletはAppletクラスを継承して作ります。Appletクラスは、java.awt.Panelを継承しています。マニュアルをみてください。次のようなプログラムをAppletTest.javaとして作ります。これをコンパイルします。}これはhtmlの中から呼び出すことができます。つぎのような、index.htmlをつくります。appletのプログラムが動きます。http://gyazo.com/637225a1c08bef7e853944ad9b8ed390.pngまたは、このhtmlファイルをアップレットビューアでみることもできます。して動作を確認できます。http://gyazo.com/d8174aace858dc50e603ee0fef62bcf7.pngつぎのようにすれば、上の先の例で示す、お絵描きプログラムも作ることができます。init()は、起動したときに最初に一度だけ呼び出されるメソッドです。}appletviewerで見てみます。http://gyazo.com/2c88f97c8f7234e5e3eb72dcd9b2713a.pngwebブラウザでもみてみましょう。更新したappletを試すためには、Safariを一旦終了して起動しなおしてください。)http://gyazo.com/143be91363a277f04a0fa8b1f5d5a43a.pngwebサーバにおけば、世界中から使うこともできます。以下をクリックしてみてください。//以下の例では、次に述べる一筆書き問題は解消されています。http://siio.jp/lecture/applet///***今日の課題////上で紹介したappletを、一筆書きにならないように変更してみてください。//やりかたは、前回やったお絵かきプログラムの改良と同じです。.java、.classファイルを、//いつものように、出席番号+名前のフォルダに入れて、//zipで圧縮して、//ファイルサーバから提出してください。42L;という変数を定義しておきます。[#ibf935ab]-絵や写真のファイルを取り込めるようにする-いろいろな効果のペンを作る(たとえばペンの動きに従って文字が出る)-絵をファイルへ書き出す機能を作る-他の絵データをスタンプのように押す機能-コピーアンドペースト-メニューバーだけでなく、スライダ、ボタン、別ウィンドウ(パレット)などを使って使いやすくする-そのほか、世の中のお絵描きプログラムにありそうな機能を実現する機能拡張の詳細はSimpleDrawの-http://lab.siio.jp/index.php?SimpleDraw#extraを見てください。SimpleDrawのページでは、-機能の拡充-使いやすさの追求の2通りの拡張を書いてあります。どちらの方針で進めていただいても結構です。説明書に、工夫したところを書いておいてください。Edit)を選択して、これを使って、今回作成したプログラムの取扱説明書を書いてください。他のアプリで作ってもらっても良いですが、最後にPDFにしておいてもらえると助かります。-せっかくですので作った機能はぜんぶここで説明してください。(プログラムは私も試してみますが機能を見逃すかもしれません)-スクリーンキャプチャした図も入れてください。図は次のようにして作ります--スクリーンキャプチャしたいところで、コマンド(リンゴマーク)+シフト+3を押します。すると画面全体のスクリーンショットがとれます--もしくは、コマンド(リンゴマーク)+シフト+4を押すとマウスドラッグで任意の場所の部分的なスクリーンショットがとれます--もしくは、コマンド(リンゴマーク)+シフト+4を押し、さらにスペースキーを押し、任意のウィンドウをクリックすると、そのウィンドウのスクリーンショットがとれます--以上の操作で、デスクトップにピクチャファイルができます。Editにドラッグアンドドロップします。キーを押しながらキーボードショートカットを押すと、画像はファイルではなく、クリップボードに保存されるので、直後に書類にペーストできます。-がんばったところ、大変だったところなどを書いていただいても結構です。できれば自力でやって欲しいのですが、だれかに教えてもらったり、web上のサンプルプログラムを参考にした場合は、そのことを説明書に書いてください。クラスメートににプログラムを教えた場合も、だれのどこを手伝ったかを書いておいてください。フォルダを作ってその中にjavaファイルとclassファイルと、取扱説明書ファイルと、それ以外に必要なファイルがもしあればそれらを入れてください。フォルダの中のclassファイルをダブルクリックしたらプログラムが起動することを確認してください。-このフォルダに名前を付けてください。フォルダの名前は、「出席番号+氏名(ローマ字の性か名)+必要ならばバージョン番号の数字」にしてください。Box/.に提出してください。Boxとしてください。ファインダーからなら、メニューから「移動」「フォルダへ移動...」を選んで以下のように入力して、移動ボタンを押して、そこに現れるドロップボックスホルダに、ドラッグアンドドロップしてください。http://siio.jp/gyazo/dropbox.png--書き込み専用なので確認できないけどokですかという意味のダイアログが出るかと思いますが問題ありません。-レポート提出用フォルダは書き込み専用で見ることができません。アップロードできたかどうか不安でしたら教員まで質問してください。-同じ名前のフォルダを投げ込むと、エラーになります。いうことで新しいバージョンができたら別の名前のフォルダを作って提出し直してください。