Java 言 語 第 6 回 Javaアプレット 知 的 情 報 システム 工 学 科 久 保 川 淳 司 kubokawa@me.it-hiroshima.ac.jp
アプレットの 概 要
Javaアプレットプログラムの 動 作 Javaアプレット ***.class htmlファイル ***.html ブラウザ(IE Firefox 等 ) Java VM Webサーバ ローカルファイル クライアントコンピュータ
アプレットの 基 本 スタイル(1) アプレット(Applet) Webブラウザ(IE, FireFox, Opera 等 ) 上 で 起 動 するプロ グラム アプレットを 作 るときは,アプレットとしての 基 本 的 な 機 能 を 持 っているAppletクラスを 継 承 して 作 る アプレットプログラムの 基 本 スタイル import java.applet.applet; // アプレット 関 連 機 能 のインポート import java.awt.graphics; // 描 画 関 連 機 能 のインポート import... // その 他 のインポート public class アプレット 名 extends Applet{//アプレットクラスの 継 承... } mainは 無 く, 後 述 のhtmlで 起 動 すべきクラスを 直 接 指 定 する
アプレットの 基 本 スタイル(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>
アプレットの 基 本 スタイル(3) アプレットの 実 行 MyAplt.javaを 記 述 し,コンパイルしてMyAplt.classを 作 成 MyAplt.classを 起 動 するように 記 述 したMyAplt.htmlを 作 成 Webブラウザ 上 でURLとしてMyAplt.htmlを 指 定 して 起 動 する HTMLファイルの 名 前 は 任 意 であり,.class 名 と 同 じであ る 必 要 は 無 い アプレットビューアでの 実 行 Javaアプレットの 開 発 をスムーズに 行 うため,Webブラウ ザが 無 くてもJavaアプレットを 実 行 できる 環 境 が 用 意 されて いる これが,アプレットビューアである appletviewer MyAplt.html
アプレットクラスの 継 承 関 係 Javaアプレットを 作 成 するときには,Appletクラスを 継 承 ( 拡 張 )する そのAppletクラスもまたスーパー クラスを 持 っている 以 下 にその 継 承 関 係 を 示 す java.lang.object ベースクラス java.awt.compornent ボタン, 部 品 の 定 義 java.awt.container java.awt.panel 複 数 の 部 品 を 格 納 するクラス レイアウトに 使 用 する コンテナ java.applet.applet アプレット クラス
アプレットの 作 成
簡 単 なアプレットの 作 成 Javaアプレットプログラム import java.applet.applet; import java.awt.graphics; public class JaAplt1 extends Applet { public void paint(graphics g) { g.drawstring("はじめてのアプレット", 30, 40); } } HTMLファイル <html> <body> <applet code="jaaplet1.class" width=300 height=100> </applet> </body> </html>
アプレットの 標 準 メソッド Javaアプレットにはスーパークラスから 継 承 した 基 本 的 な 機 能 を 持 つメソッドがある 独 自 の 処 理 を 行 うためには,これらのメソッド をオーバーライドする 必 要 がある メソッド 名 init() start() stop() destory() paint() repaint() update() 意 味 初 期 化 メソッド, 最 初 に1 回 だけ 呼 び 出 される init()の 次 に 呼 び 出 される アプレットの 再 表 示 などに 利 用 される アプレットを 実 行 中 断 するときに 呼 び 出 される アプレットを 完 全 終 了 するときに 呼 び 出 される 画 面 描 画 の 具 体 的 な 記 述 を 入 れる 最 も 重 要 なメソッド 意 図 的 な 再 描 画 のために 呼 び 出 される paint()メソッドを 呼 び 出 して 再 描 画 する 画 面 処 理 に 関 する 特 殊 処 理 を 記 述 する 場 合 がある
Graphicsクラスを 理 解 する paint()メソッドは 以 下 のようになっていた public void paint (Graphics g) {... } この 引 数 であるGraphicsクラスのオブジェクトは 画 面 へのグラフィクス 描 画 を 行 うために 使 用 される Graphicsクラスで 描 画 できる 図 形 は, 文 字 列, 線, 円, 四 角 形,イメージ などがある
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)へ 直 線 を 描 く
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) 指 定 の 矩 形 を 現 在 の 色 で 塗 りつぶす
Graphicクラスの 主 要 メソッド(3) abstract Font getfont() 現 在 のフォントを 返 す abstract void setcolor(color c) 色 を 設 定 する abstract void setfont(font font) フォントを 設 定 する
描 画 を 行 う
描 画 を 行 う 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); // 矩 形 クリア } }
テキストを 表 示 する
テキストを 表 示 する(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,ITARIC 重 複 指 定 の 時 には Font.BOLD Font.ITARIC のように 指 定 する ポイント : ポイントサイズを 数 値 で 指 定
テキストを 表 示 する(2) import java.applet.applet; import java.awt.graphics; 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 文 字 列 "; appletviewerだけで 動 作 させるための おまじない 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)); // 明 朝 斜 体 36pt g.drawstring(ss, 10, 120); }
テキストを 表 示 する(3) プログラムを 作 成 notepad JaFont1.java Javaコンパイラでコンパイル javac JaFont1.java アプレットビューワによる 表 示 appletviewer JaFont1.java javaプログラム 内 にあるhtmlコードを 利 用 する 実 行 結 果
課 題 以 下 の 実 行 結 果 となるようなJavaアプレットプログラムを 作 成 しなさい ただし, 以 下 のソースコードを 利 用 すること import java.applet.applet; import java.awt.*; /* */ <APPLET CODE="JaDrawKadai.class" WIDTH=300 HEIGHT=200> </APPLET> public class JaDrawKadai extends Applet { public void paint(graphics g) { // ここを 作 成!! } }
EclipseでのJavaアプレット 開 発 通 常 のEclipseによるJavaプログラム 開 発 とほとんど 同 じ 手 順 をとる パッケージエクスプローラで 左 クリックして,プロジェクトを 作 成 する ウィザードはJavaプロジェクト(これまでと 同 じ)を 使 用 する
EclipseでのJavaアプレット 開 発 (2) パッケージとしてappletkadaiを 作 成 する
EclipseでのJavaアプレット 開 発 (3) クラスを 作 成 する クラス 名 は, 今 回 の 課 題 であれば JaDrawKadai とする アプレットなので,スーパークラスはjava.applet.Applet とする( 後 から 変 更 できるので, 今 回 指 定 しなくても 良 い)
Javaアプレットプログラムの 実 行 クラスファイルを 選 択 し, 右 クリッ クの 実 行 メニュー の 中 からJavaア プレットを 選 択 し, 実 行 する
アプレットビューアの 設 定 (1) 本 来 なら,htmlファイルでアプレットのウインドウの 大 きさを 指 定 しなくてはいけないが,Eclipseではclass ファイルしか 作 成 していないので,ウインドウの 大 きさ がデフォルトになっている
アプレットビューアの 設 定 (2) ウインドウの 大 きさを 設 定 するためには, 実 行 メ ニューの 構 成 およびプロファイル を 選 択 し,パラ メータタブにある 幅 と 高 さを 設 定 する
Eclipseで 作 成 したソースファイルの 入 っている 場 所 C: Documents and Setting ユーザ 名 workspace プロジェクト 名 パッケージ 名