プログラミング実習(Java)

プログラミング実習(Java)
グラフィクス処理とGUIプログラミング
講師:坂口 利裕(横浜市立大学)
第2日の目標
Javaによるアニメーションの表現方法を知
る
 ファイル処理の概要を知る
 アプリケーションの作り方を知る

2008.08.14~15
プログラミング実習(Java)
2
第4章

Javaによるアニメーション表現

アニメーションの基礎
アニメーションの原理
 マルチスレッド
 ダブルバッファ


GUIによる制御
状態識別の変数,GUI部品の追加
 リスナでStart/Stopを制御し状態識別の変数に反映
 runメソッドを状態識別の変数に応じた動作に変更

2008.08.14~15
プログラミング実習(Java)
3
アニメーションの表現
第1章
コマ
第2章
第3章
少しずつ変化する
絵を連続的に描画
第4章
第5章
2008.08.14~15
残像に残る程度の時
間間隔を空ける。
プログラミング実習(Java)
4
マルチスレッド
Threadクラスのオブジェクトにより,
同時進行できる別の“流れ”を生成
第1章
init()
第2章
th = new Thread(this) ;
th.start() ;
start()
第4章
第5章
run()
本流へ戻る
第3章
イベント処理
分流を作り分岐
独自のルー
プを構成
リスナなど
repaint()
イベント待ちのループ
(通常の流れ)
update()
paint()
2008.08.14~15
プログラミング実習(Java)
5
ダブルバッファ
第1章
計算を伴う場合遅れが目立つ
通常の処理
計算を伴っても遅れが目立たない
裏画面を使った処理
第2章
画面
画面
第3章
直接描画
転送のみ
第4章
g.drawImage()
paint(g) メソッド
g.drawLine()など
裏画面
第5章
paint(g) メソッド
2008.08.14~15
プログラミング実習(Java)
backG.drawLine()など
6
sample07.javaの改造ポイント
第1章

init()メソッド


第2章



第4章
第5章
start()メソッド

第3章
全体の制御→[開始]ボタンが押された状態の時反復する
内容→変数 t の更新を行う
paintBack()メソッド

2008.08.14~15
init()処理後にシステムから1度だけ実行
スレッドの生成や裏画面の確保を記述
run()メソッド


プログラムが呼び出される時に1度だけ実行
GUI部品の設定などを記述
アニメーションの1コマ分に相当する画像を描画→ t に依
存して位置を決定→描画メソッドを用いた描画処理
プログラミング実習(Java)
7
GUIの追加(具体名は考える)
第1章
第2章
第3章
第4章

Buttonオブジェクトを追加して停止・実行で
きるように改良




リスナーを追加
オブジェクトを生成し画面上に登録
ボタンに対してリスナーを登録
イベント処理用メソッドを追加


第5章


2008.08.14~15
boolean型変数isRunning を共通部分に準備
isRunningにてStart/Stopを制御
ButtonのラベルはsetLabel(“…”)メソッドで変更可能
run()内で isRunningがtrueの時に限り位置を更新
プログラミング実習(Java)
8
GUIの追加(解答)
第1章
第2章

Buttonオブジェクトを追加して停止・実行で
きるように改良


第3章

第4章

リスナー ActionListenerを追加
オブジェクトを生成し画面上に登録(add)
ボタンに対してリスナーを登録
(addActionListener)
イベント処理用メソッドactionPerformedを追加

第5章



2008.08.14~15
boolean型変数isRunning を共通部分に準備
isRunningにてStart/Stopを制御
ButtonのラベルはsetLabel(“…”)メソッドで変更可能
run()内で isRunningがtrueの時に限り位置を更新
プログラミング実習(Java)
9
第5章

ファイル処理と総合演習
ファイルの入出力
 画像ファイルの利用
 総合演習

アプリケーション(ブラウザから独立した)プログラム
の作成の要点
 各自の興味に応じた復習・実習
 総合質問

2008.08.14~15
プログラミング実習(Java)
10