オブジェクト指向言語 第12回 アプレット オブジェクト指向言語 知的情報システム学科 1 出席確認 確認ページ http://www.iis.it-hiroshima.ac.jp/~zhxh/ 確認の手順 ユーザ登録(最初1回のみ) ログイン ユーザ名は学生番号 (例:BA06300) パスワードは忘れないように !! 登録したユーザ・パスワードでログイン キーナンバー オブジェクト指向言語 知的情報システム学科 2 アプレットの概要 オブジェクト指向言語 知的情報システム学科 3 アプレットの基本スタイル(1) アプレット(Applet) ・ Webブラウザ(IE, FireFox, Opera等)上で起動するプログラム ・ アプレットを作るときは,アプレットとしての基本的な機能を持って いるAppletクラスを継承して作る。 アプレットプログラムの基本スタイル import java.applet.Applet; import java.awt.Graphics; import ..... // アプレット関連機能のインポート // 描画関連機能のインポート // その他のインポート public class アプレット名 extends Applet{//アプレットクラスの継承 .... } オブジェクト指向言語 知的情報システム学科 4 アプレットの基本スタイル(2) HTMLファイルの準備 JavaアプレットをWebブラウザ上で実行するためには,Webブ ラウ ザ用のHTMLファイルを用意し,その中にJavaアプレットを起動 する 指示を入れる。 Javaアプレットを起動するHTMLの例 ここでは,MyAplt.classという名前のJavaアプレットを起動する よう <html> にHTMLで指示する。 <body> <applet code="Myaplt.class" width=300 height=100> </applet> </body> </html> <applet ~~~ > </applet> オブジェクト指向言語 知的情報システム学科 5 アプレットの基本スタイル(3) アプレットの実行 ① MyAplt.javaを記述し,コンパイルしてMyAplt.classを作成 ② MyAplt.classを起動するように記述したMyAplt.htmlを作成 ③ Webブラウザ上でURLとしてMyAplt.htmlを指定して起動す る -- HTMLファイルの名前は任意であり,.class名と同 じである 必要は無い。 アプレットビューアでの実行 ・ Javaアプレットの開発をスムーズに行うため,Webブラウザが 無く てもJavaアプレットを実行できる環境が用意されている。これ が, アプレットビューアである。 ・ appletviewer MyAplt.html知的情報システム学科 オブジェクト指向言語 6 アプレットの基本スタイル(4) わざわざJavaアプレットに対応するHTMLを用意しなくてもよい。 この場合、HTMLの<APPLET>タグをソースファイルに埋め込む javacは コメント とみなす import java.applet.Applet; appletviewerは意味の import java.awt.Graphics; ないデータとみなす /* <APPLET CODE=“MyAplt.class” ~> </APPLET> */ public class MyAplt extends Applet{ appletviewer いろいろな記述 は意味のない } データとみなす コンパイルしたあと、次のように実行する appletviewer MyAplt.java 注:この記述はIEで実行できない。あくまでも開発中用である オブジェクト指向言語 知的情報システム学科 7 アプレットクラスの継承関係 Javaアプレットを作成するときには,Appletクラスを継承(拡張)する。 そのAppletクラスもまたスーパークラスを持っている。以下にその 継承関係を示す。 java.lang.Object ベースクラス java.awt.Compornent ボタン,部品の定義 java.awt.Container 複数の部品を格納するクラス java.awt.Panel java.applet.Applet オブジェクト指向言語 知的情報システム学科 レイアウトに使用する コンテナ アプレット クラス 8 アプレットの作成 オブジェクト指向言語 知的情報システム学科 9 簡単なアプレットの作成 Javaアプレットプログラム:JaAplt1.java import java.applet.Applet; import java.awt.Graphics; Appletクラスを拡張したクラスでは アプレットが画面表示されるときに、 paint()メソッドが自動てきに呼び 出されるようになっている public class JaAplt1 extends Applet { public void paint(Graphics g) { 引数がいつもGraphics gである g.drawString("はじめてのアプレット", 30, 40); } 画面上(30, 40)のところから文字を“描く” } HTMLファイル: JaAplt1.html <html> <body> <applet code="JaAplt1.class" width=300 height=100> </applet> </body> </html> オブジェクト指向言語 知的情報システム学科 10 アプレットの標準メソッド Javaアプレットにはスーパークラスから継承した基本的な機能 を持つメソッドがある。独自の処理を行うためには,これらの メソッドをオーバーライドする必要がある。 メソッド名 意味 init() 初期化メソッド,最初に1回だけ呼び出される。 start() init()の次に呼び出される。アプレットの再表示などに利 用される。 stop() アプレットを実行中断するときに呼び出される。 destory() アプレットを完全終了するときに呼び出される。 paint() 画面描画の具体的な記述を入れる。最も重要なメソッド。 repaint() 意図的な再描画のために呼び出される。なかに update()が実行され、そこからpaint()を呼び出す。 update() paint()メソッドを呼び出して再描画する。画面処理に関 する特殊処理を記述する場合がある。 オブジェクト指向言語 知的情報システム学科 11 アプレットの動作順序 コードで再描画 指示する 起動 窓復元 init() repaint() start() update() paint() stop() 例えば、窓 最小化 destroy() 窓を閉じる 起動 注:アプレットにmainメソッドは不要 オブジェクト指向言語 知的情報システム学科 12 Graphicsクラスを理解する paint()メソッドは以下のようになっていた。 public void paint (Graphics g) { ... } この引数であるGraphicsクラスのオブジェクトは画面への グラフィクス描画を行うために使用される。 Graphicsクラスで描画できる図形は, 文字列,線,円,四角形,イメージ などがある。 オブジェクト指向言語 知的情報システム学科 13 Graphicクラスの主要メソッド(1) abstract void clearRect(int x int y, int width, int height) 指定された矩形をクリアする(現在の背景色で塗りつぶす) abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) 指定された矩形に接する円弧または楕円弧を描く。startAngleで開 始角度を指定しarcAngleで弧の展開角度を指定する。 abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) 指定されたイメージを座標(x,y)の位置を左上隅にして描く。 abstract boolean drawImage(Image img, int x, int y,int width, int hight, ImageObserver observer) 指定されたイメージを指定された矩形の内部に納まるようスケーリン グして描く。 abstract drawLine(int x1, int y1, int x2, int y2) 座標(x1, y1)から座標(x2, y2)へ直線を描く オブジェクト指向言語 知的情報システム学科 14 Graphicクラスの主要メソッド(2) abstract void drawOval(int x, int y, int width, int height) 指定の矩形内に収まる円または楕円を描く void drawRect(int x, int y, int width, int height) (x,y)を左上隅とする矩形を描く abstract void drawString(String str, int x, int y) 座標(x,y)に文字列を描く。 abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) 指定された矩形に接する円弧を描き,内部を現在の色で塗りつぶす。 abstract void fillOval(int x, int y, int width, int height) 指定の矩形内に接する円弧を現在の色で塗りつぶす。 abstract void fillRect(int x, int y, int width, int height) 指定の矩形を現在の色で塗りつぶす。 オブジェクト指向言語 知的情報システム学科 15 Graphicクラスの主要メソッド(3) abstract Font getFont() abstract void setColor(Color c) 現在のフォントを返す 色を設定する abstract void setFont(Font font) フォントを設定する オブジェクト指向言語 知的情報システム学科 16 テキスト表示 オブジェクト指向言語 知的情報システム学科 17 テキスト表示(1) テキスト表示メソッド void drawString(Sting str, int x, int y) 引数で渡されたGraphicsクラスのオブジェクトgに対して行われるので, g.drawString(文字列,x座標,y座標); として呼び出せばよい。 Fontクラスのコンストラクタ Font(String フォント名, int 書体, int ポイント数); フォント名:Dialog,DialogInput,Monospaced,Serif,SansSerif 書体 : Font.PLAIN,Font.BOLD,Font,ITALIC 重複指定の時には Font.BOLD | Font.ITARIC のように指定す る。 ポイント : ポイントサイズを数値で指定 オブジェクト指向言語 知的情報システム学科 18 テキスト表示(2) import java.applet.Applet; import java.awt.Graphics; appletviewerだけで import java.awt.Font; /* 動作させるための <APPLET CODE="JaFont1.class" WIDTH=300 HEIGHT=140> おまじない </APPLET> */ public class JaFont1 extends Applet { // JaFont1.java [java] public void paint(Graphics g) { String ss = "ABCabc文字列"; g.drawString(ss, 10, 20); //文字列を表示 g.setFont(new Font("Serif", Font.BOLD, 24)); g.drawString(ss, 10, 50); //Serif、太字、24pt g.setFont(new Font("MS ゴシック", Font.PLAIN, 24)); //ゴシック、普通、24pt g.drawString(ss, 10, 80); g.setFont(new Font("MS 明朝", Font.ITALIC, 36)); g.drawString(ss, 10, 120); } // 明朝、斜体、36pt } オブジェクト指向言語 知的情報システム学科 19 テキスト表示(3) プログラムを作成 JaFont1.java Javaコンパイラでコンパイル javac JaFont1.java アプレットビューワによる表示 appletviewer JaFont1.java javaプログラム内にあるhtmlコードを利用する。 実行結果 オブジェクト指向言語 知的情報システム学科 20 描画を行う オブジェクト指向言語 知的情報システム学科 21 描画の例 import java.applet.Applet; import java.awt.*; /* <APPLET CODE="JaDraw1.class" WIDTH=300 HEIGHT=340> </APPLET> */ public class JaDraw1 extends Applet { public void paint(Graphics g) { int x1 = 70, wd1 = 150, ht1 = 30; g.drawLine(x1, 10, x1+wd1, 40); // 直線 g.drawRect(x1, 50, wd1, ht1); // 矩形 g.fillRect(x1, 90, wd1, ht1); // 矩形塗り潰し g.drawOval(x1, 130, wd1, ht1); // 楕円 g.fillOval(x1, 170, wd1, ht1); // 楕円塗り潰し g.drawArc(x1, 210, 50, 50, 0, 270); // 円弧 g.fillArc(x1+100, 210, 50, 50, 0, 270); // 円弧塗り潰し g.fillRect(x1, 270, wd1, 50); // 矩形塗りつぶし g.clearRect(x1+10, 280, wd1-20, 30); // 矩形クリア } } オブジェクト指向言語 知的情報システム学科 22 色を指定する オブジェクト指向言語 知的情報システム学科 23 色の指定 背景色を指定する g.setBackground(Color.gray); Graphicsクラスオブジェクトgのバックグラウンドカラーを灰色にする。 現在色を指定する g.setColor(Color.red); 現在色を赤に指定する。この後に描かれるものは赤色になる。 色指定の表は教科書344ページ表20-2を参照すること。 色をRGBで指定 Color(0, 0, 0) 黒 Color(0, 0, 255) 青 オブジェクト指向言語 知的情報システム学科 24 色指定の例 import java.applet.Applet; import java.awt.*; /* <APPLET CODE="JaClr1.class" WIDTH=300 HEIGHT=100> </APPLET> */ public class JaClr1 extends Applet { static int yy; public void paint(Graphics g) { yy = 10; setBackground(SystemColor.control); // 背景色:標準 g.setColor(Color.blue); // 青指定 g.fillRect(10, yy, 190, 29); g.drawString("現在色:青", 210, yy+15); yy += 50; g.setColor(new Color(0, 255, 0)); // RGBで緑指定 g.fillRect(10, yy, 190, 29); g.drawString("現在色:緑", 210 , yy+15); } } オブジェクト指向言語 知的情報システム学科 25 課 題 以下の実行結果となるようなJavaアプレットプログラ ムを作成しなさい。ただし,以下のソースコードを利 用すること。また、各描画要素に好きな色を付けて もよい。 import java.applet.Applet; import java.awt.*; /* <APPLET CODE=“ob12.class" WIDTH=300 HEIGHT=200> </APPLET> */ public class ob12 extends Applet { public void paint(Graphics g) { // ここを作成!! } } オブジェクト指向言語 知的情報システム学科 26 課題のヒント 縦横の線は,300×200ドットを6×4に分けるように引いているので,50 ドットづつの線であることがわかる。したがって,そのような座標を指定し てg.drawLineメソッドを呼び出せばよい。 ●○\は縦方向に3個づつ繰り返されている。直接書いても良いが,こ のルールを使ってプログラミングをすればよい。 int i=0; for (横方向繰り返し) { for (縦方向繰り返し) { if (i%3 == 0 ) ●を描く; if (i%3 == 1 ) ○を描く; if (i%3 == 2 ) \を描く; i++; } } オブジェクト指向言語 知的情報システム学科 27
© Copyright 2024 ExpyDoc