以下に java.awt.graphics クラスの主なメソッドを示す (Graphics クラスの ) メソッド drawline(int x1, int y1, int x2, int y2) drawrect(int x, int y, int width, int height) fillr

Similar documents
(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Microsoft PowerPoint - prog10.ppt

Microsoft PowerPoint prog1_doc2x.pptx

ガイダンス

Microsoft PowerPoint - OOP.pptx

次の演習課題(1),(2)のプログラムを完成させよ

Microsoft PowerPoint - prog10.ppt

ガイダンス

<4D F736F F F696E74202D AC C8899E D834F E >

PowerPoint Presentation

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

Microsoft PowerPoint - OOP.pptx

Microsoft PowerPoint prog1_doc2.pptx

ÿþ˜u#u·0¹0Æ0à0

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

Chapter JDK KeyListener keypressed(keyevent e ) keyreleased(keyevent e ) keytyped(keyevent e ) MouseListener mouseclicked(mouseeven

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

Microsoft PowerPoint ppt


2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

Animals サンプル Step 1 動物の種類を指定しておいて クリックした場所に画像を貼り付ける < レイアウトについて > 前回は ラベルやボタンの位置を座標で設定した Absolute Layout を選んだためである レイアウトは どのようにボタンなどのコンポーネントを配置するかを決定す

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

Graphical User Interface 描画する

Animals サンプル Step3 張り付けた動物の上をクリックすると それぞれの鳴き声で鳴く その鳴く間 一定時間 ( ここでは 1 秒間 ) 画像が別のものに変わる <アニメーションの基礎 : タイマーについて> アニメーションは アプリケーションが指定する間 一定間隔でどんどん画像をおきかえ

Java 2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q 2.

Prog2_11th


2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

Animals サンプル Step 2 張り付けた動物の上をクリックすると それぞれの鳴き声で鳴く < 例外について > エラーや 通常の処理の中では起こってはいけない事象のことを例外といい 例外が起こる可能性がある場合はその対応処理を記述しなければならない 一般に java.lang パッケージの

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

問1

Microsoft Word - Java3.DOC

JAVA入門

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

PowerPoint プレゼンテーション

// ステージを設定します stage.setscene(scene); stage.settitle(" キャンバス "); // ステージを表示します stage.show(); public static void main(string[] args) launch(args); キャンバス

Java 2 - Lesson01

Prog1_12th

このような 回転や平行移動による座標変換の情報は ModelView 行列 が持っている ModelView 行列は gl.glpushmatrix() でいったん保存しておき 回転や平行移動を重ねて描画した後 gl.glpopmatrix() で保存した状態に戻すことができる ワールド座標系とウィ

2008 e-learning T050050

Java言語 第1回

I 4 p.2 4 GUI java.awt.event.* import /* 1 */ import mouseclicked MouseListener implement /* 2 */ init addmouselistener(this) this /* 3 */ this mousec

アプレットⅣ

2 p.2 2 Java > javac Hello0.java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.j

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

r3.dvi

Prog1_12th

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

PowerPoint Presentation

ソフトウェア開発方法論2

Microsoft PowerPoint - swing3.ppt

プログラミング入門1

ブロック崩し Step1 矢印キーで左右に動かせるパドルを描画する < パドルの表現方法 > パドルは java.awt パッケージの Rectangle という Java が用意しているクラスを使う これは四角形を表すクラスで 左上の点の座標と幅 高さをもっている (x, y) Rectangle

< F2D F B834E2E6A7464>

Prog2_9th

Chapter 20. [ ] ; [ ] = new [ ] ; Color colors [ ] = new Color[ 20 ]; // 20 Button operations [ ] = new Button[ 10 ]; // 10 colors[ 3 ] = new Color( 1

Microsoft PowerPoint ppt

Microsoft PowerPoint - prog11.ppt

PowerPoint プレゼンテーション

< F2D B838A835882CC8CF68EAE2E6A7464>

PowerPoint プレゼンテーション

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

3D 描画 Step1-1 まず O 原子となる球を 1 つ描画する <WaterPanel.java の作成 > 1.Chemical プロジェクトをインポート 共有フォルダから Chemical.zip をコピーして workspace 内にはりつけ パッケージ エクスプローラで右クリック イン

< F2D82B682E182F182AF82F12E6A7464>

< F2D82518CC282CC D2E6A7464>

r14.dvi

< F2D834F838C A815B A CC>

一方, 物体色 ( 色や光を反射して色刺激を起こすもの, つまり印刷物 ) の表現には, 減法混色 (CMY) が用いられる CMY の C はシアン (Cyn),M はマゼンタ (Mgent),Y はイエロー (Yellow) であり, これらは色の 3 原色と呼ばれるものである なお, 同じシア

アジェンダ 1 グラフィカルなインタフェース GUI(Graphical User Interface) の基礎 2 Swing を利用する Swing の基礎知識 2

text_13.dvi

ウィンドウの構成ウィンドウはタイトルバーとウィンドウ枠からなります タイトルバーには最小化 / 最大化ボタンや閉じるボタンがあります また ウィンドウはクライアント領域をもちます クライアント領域にはボタンなど GUI 部品が配置されます GUI 部品配置 ( レイアウト ) ウィンドウ ( ステー

< F2D825282CC947B909482CC A815B83682E6A>

教材ドットコムオリジナル教材 0から始めるiアプリ (4) 0 から始める i アプリ (4) i アプリをプログラミングする際に必要なのは Java というプログラミング言語の基礎知識です 独自の命令や駆使してプログラミングをするわけですが Java というベースになっている言語を知らないでプログ

アプレットⅠ

piyo0702a.rtfd

II Java :30 12:00 I. I IV II. III. IV. ( a d) V. : this==null, T == N A ActionListener C class D actionperformed G getsource I implements K

データ構造とアルゴリズム論

IT プロジェクト

HCI プログラミング 5 回目ウィンドウに画像を表示してみよう 今日の講義で学ぶ内容 画像の表示 画像のエフェクト 画像のビューポート指定 画像の表示 1 画像を表示してみましょう 画像の表示はクラス ImageView により管理されます ソースファイル名 :Sample5_1.java //

ガイダンス

GUIプログラムⅣ

< F2D8EA CE909482CC92EA82852E6A7464>

< F2D92DE82E8914B82CC977088D32E6A7464>

ガイダンス

PowerPoint プレゼンテーション

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Java言語 第1回

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

I. (i) Java? (A). Foo_Bar (B). G day (C). 999 (D). Golgo13 (ii)? (A). Java public (B). Java (C). Java JavaScript (D). Java C Java C (iii)? (A). Java (

Microsoft PowerPoint - swing2.ppt

try catch Exception Java try catch try { } catch ( Exception e ) { } e 16-1 try catch 0 try { int x = 0; int y = 10 / x; } catch ( Exception e ) { Sys

のようにする 上の例では GeneralPath を new するときに コンストラクタに何も指定していないが 直線を表す Line, 四角形を表す Rectangle などを引数に与えてもよい 矢印を作成するメソッドの引数矢印を表す GeneralPath を生成するために getarrowpat

基本情報STEP UP演習Java対策

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

参考 - メインスレッドは JVM によって自動的に起動されるため 起動するコードを書く必要 はありません 今まで例題 演習で作成してきたプログラムは全てメインメソッドにて 動作している シングルスレッドです マルチスレッドマルチスレッドとは名前のとおり複数のスレッドと言う意味です マルチスレッドは

4 p.2 4 GUI return; public void mousepressed(mouseevent e) { /* 5 */ public void mousereleased(mouseevent e) { /* 5 */ public void mouseentered(mousee

Java講座

Cir

Transcription:

第 5 章グラフィックス, スレッドとマウスイベントによる描画処理 描画処理およびマルチスレッドの基礎についてそれぞれ理解し,Java を用いてイベント処理を組み合わせたプログラムを作成する 5.1 描画処理 最初に, パネル上にグラフィックス描画を行う方法について説明する グラフィックスを表示するにはフレームにパネルを配置し, 処理内容を paintcomponent メソッド内に記述する paintcomponent メソッドは java.awt.graphics クラスのオブジェクト g に対して, グラフィックスメソッド (drawline は線,drawRect は四角, など ) を使用する public paintcomponent(graphics g){ super.paintcomponent(g); g.drawline(0, 0, 200, 200); // グラフィック処理を記述 グラフィック処理は座標 ( ピクセル ) による指定で行われる パネルの座標原点はタイトルバー下 ( 枠内 ) の左上隅となり,x 座標 ( 水平 ) 右方向,y 座標 ( 垂直 ) 下方向がそれぞれ+となる 5-1

以下に java.awt.graphics クラスの主なメソッドを示す (Graphics クラスの ) メソッド drawline(int x1, int y1, int x2, int y2) drawrect(int x, int y, int width, int height) fillrect(int x, int y, int width, int height) clearrect(int x, int y, int width, int height) drawroundrect(int x, int y, int width, int height, int arcwidth, int archeight) fillroundrect(int x, int y, int width, int height, int arcwidth, int archeight) drawoval(int x, int y, int width, int height) filloval(int x, int y, int width, int height) Color getcolor() setcolor(color c) 説明 直線を描く (x は水平方向,y は垂直方向 ) (x1, y1) 始点の座標 (x2, y2) 終点の座標 矩形 ( 四角 ) の輪郭を描く (x, y) 矩形の左上隅の座標 width 矩形の幅 height 矩形の高さ 矩形 ( 四角 ) を塗りつぶして描く 引数は上記と同様 矩形 ( 四角 ) を ( 現在の描画表面の ) バックグラウンドカラーで塗りつぶして消す 引数は上記と同様 丸いコーナー付きの矩形 ( 角丸四角 ) の輪郭を描く (x, y) 矩形の左上隅の座標 width 矩形の幅 height 矩形の高さ arcwidth 4 隅の弧の水平方向の直径 archeight 4 隅の弧の垂直方向の直径 丸いコーナー付きの矩形 ( 角丸四角 ) を塗りつぶして描く 引数は上記と同様 楕円の輪郭を描く (x, y) 楕円の左上隅の座標 width 楕円の幅 height 楕円の高さ 楕円を塗りつぶして描く 引数は上記と同様 現在の色を java.awt.color クラスのオブジェクトで返す現在の色を java.awt.color クラスのオブジェクト ( 引数 ) で指定された色に設定 5-2

また,java.awt.Color クラスでは下表のような基本色がフィールドで定義されており,java.awt. Graphics クラスのオブジェクトにおいて描画色を設定することができる ( ちなみに初期状態は black である ) フィールド名説明 ( 色 ) black cyan gray lightgray orange red yellow blue darkgray green magenta pink white 黒シアングレイライトグレイオレンジ赤黄青ダークグレイ緑マゼンタピンク白 さらに, この java.awt.color クラスにはいくつかのコンストラクタが定義されているが, その代表的なものを下表に示す コンストラクタ 説明 Color(int rgb) ビット 16~23 の R 部分, ビット 8~15 の G 部分, ビット 0~7 の B 部分より合成された RGB 値を使って, 不透明な srgb カラーを生成 Color(int r, int g, int b) 0~255 の範囲で指定された R,G,B の値を使って, 不透明な srgb カラーを生成 Color(int r, int g, int b, int a) 0~255 の範囲で指定された R,G,B の値, およびアルファ値を使って, srgb カラーを生成 5-3

5.1.1 描画の色指定 java.awt.color クラスで色を生成する場合, 前述の通り色を表す定数を指定する方法以外に RGB 法による red,green,bule の各成分を 0~255 の値で指定する方法がある RGB 値 (16 進表記 ) (R, G, B) (10 進表記 ) 説明 ( 色 ) 00 00 00 (0, 0, 0) 黒 ff ff ff (255, 255, 255) 白 ff 00 00 (255, 0, 0) 赤 00 ff ff (0, 255, 255) シアン 00 ff 00 (0, 255, 0) ライム ff 00 ff (255, 0, 255) マゼンタ 00 00 ff (0, 0, 255) 青 ff ff 00 (255, 255, 0) 黄 詳細は, 前章 ( 第 4 章 ) を参照のこと 5-4

5.2 スレッド処理 スレッド (thread) とは, プログラムにおける処理の流れの単位のことを示す このスレッド処理が複数並行しておこなわれるとき, 実際に働いているのは 1 つのプログラムであるが, 複数のプログラムが動いているかのように異なる処理を同時に行う処理をおこなっている これをマルチスレッド処理という スレッド状態説明 (state) 新規状態 new 演算子などによって生成された状態 実行開始は startメソッドを呼び出す 実行可能状態 start メソッドが呼び出されると実行可能状態となる スレッドの実行順序は,OS に任される ブロック状態スレッドを一時停止したり, スレッドが何かに対して待機すると, スレッドは待機状態となる 終了状態スレッドの run メソッドが最後まで実行され, 正常終了した場合, または, 途中で何らかのエラーによって異常終了した場合には, スレッドは終了状態となる このようなスレッドの機能を実現する元のインタフェースは Runnable であり, インスタンスを 1 つのメソッドで実行するすべてのクラスには, このインタフェースの実装が必要である Runnable の中には run というメソッド ( 引数は無し ) が定義されている これはスレッドを実行するために必要であり, この中にアクティブな処理を追加する この Runnable を実装した Java API のクラスとして,Thread がある (Runnable のサブクラスではない ) Thread では run が呼び出せる他, その run を呼び出してスレッドの実行を開始する start, 実行中のスレッドを指定された引数の時間 ( ミリ秒 ) で中断させる sleep といったメソッドが使用できる 5-5

5.2.1 再描画処理 前述の通り, スレッドでは run メソッドの中でアクティブな処理を追加することができるが, この中で, 既に描画された結果をその処理後の結果で再描画するためのメソッドとして, java.awt.component クラス ( もしくは javax.swing.jcomponent クラス, すなわちこれまでの演習でも使用していた JPanel のスーパークラス ) の中に定義された repaint が使用できる メソッド repaint() repaint(int x, int y, int width, int height) 概要および記述コンポーネント ( 全体 ) を再びペイントコンポーネントの指定された場所の矩形領域を再びペイント 5-6

5.3 マウスのイベント処理 javax.swing コンポーネントにおけるマウスイベント処理は, 書式が下のようになり, 次項に示すクラス メソッドを用いておこなう イベント処理 ( 書式例 ) add イベントリスナークラス名 (new アダプタークラス名 ()){ public イベント処理メソッド名 ( イベントクラス名 e){ // イベント処理の内容 各イベント処理メソッドで使用する引数 (e) には,MouseEvent クラスのオブジェクトを使用する このクラスで使用できるメソッド getx,gety により, イベントが発生した位置の x( 幅方向 ),y( 高さ方向 ) の各座標をそれぞれ, 発生元のコンポーネントに対する相対位置で返すことができる ( 例 ) int x = e.getx(); int y = e.gety(); これら ( イベントの種類 ) をまとめると, 下記の表のようになる イベント イベントリスナー アダプター イベント処理 クラス名 クラス名 クラス名 メソッド名 MouseEvent MouseListener MouseAdapter mouseclicked ( クリック系イベント用 ) mouseentered mouseexited mousepressed mousereleased MouseMotionListener MouseMotionAdapter mousedragged ( ドラッグ系イベント用 ) mousemoved 5-7

上記の各イベントに対する書式例は以下のようになる ( 各イベントとも, すべてのメソッドの記述が空の場合であれ必要にある ) イベント処理 MouseListener ( クリック系イベント用 ) 書式例 public class クラス名 extends JFrame implements MouseListener{ // JFrame クラスに MouseListener クラスの機能を提供 addmouselistener(this); public mouseclicked(mouseevent e){ // マウスクリック ( 押してから離す ) 時の処理 public mouseentered(mouseevent e){ // マウスコンポーネントに入った時の処理 public mouseexited(mouseevent e){ // マウスコンポーネントから出た時の処理 public mousepressed(mouseevent e){ // マウスプレス ( 押し続ける ) 時の処理 MouseMotionListener ( ドラッグ系イベント用 ) public mousereleased(mouseevent e){ // マウスのボタンを離した時の処理 public class クラス名 extends JFrame implements MouseMotionListener{ // JFrame クラスに MouseMotionListener クラスの機能を提供 addmousemotionlistener(this); public mousedragged(mouseevent e){ // ドラッグ操作時の処理 public mousemoved(mouseevent e){ // ムーブ操作時の処理 5-8