目次

アプレットなJavaの基礎講座

画像データとパラメータ

◆画像データとパラメータ

文字列、線、四角形、円ときたら、つぎは、やはり画像をアプレットで表示してみましょう。

違いは、drawXXXメソッドがdrawImageメソッドになり、文字列、線等と違い、画像データを読み込むgetImageメソッドも必要です。
では、ソースを説明致します。

jlearn03.javaの内容

import java.applet.Applet;
import java.awt.*;
public class jlearn03 extends Applet{
	String name;	
	public void init(){
		name = getParameter("imgName");
	}
	public void paint(Graphics g) {
		Image img;
		img = getImage(getDocumentBase(), name);
		g.drawImage(img, 20, 20, this);	
	}
}

java.awt.*; について

import java.applet.Applet;は今までと同じですが、import java.awt.*;はちょっとちがいますね。そう「*」です。
実は、java.awtはいわゆる一つのパッケージといって、沢山のクラスの集まりです。「*」を記述することで、沢山のクラスのすべてを継承します。

注意

あくまでも、java.awtパッケージ内のすべてのクラスが対象で、java.awt.xxx やjava.awt.yyyなどのパッケージでないことに注意。

initメソッド について

paintメソッドは、アプレットを表示する時に起動されますが、initメソッドは、ブラウザがアプレットを読み込んだ時起動されます。
つまり、paintメソッドで画像データを表示する前に、画像データのパス名+ファイル名を取得しています。

オブジェクト宣言とインスタンス作成

String name;やImage img;は、オブジェクト宣言で、name = getParameter("imgName");やimg = getImage(getDocumentBase(), name);をインスタンス作成といいます。

getParameterメソッド

getParameter("imgName");

appletタグのparam要素で指定したvalue属性の値(パス名+ファイル名)を取得して、戻り値へ返します。

1番目の引数は、appletタグのparam要素のname属性を指定します。

getDocumentBaseメソッド

getDocumentBase

appletタグのある、HTML文書(HTMLソース)のURLを取得して、戻り値へ返します。
引数は、ないです。

getImageメソッド

getImage(getDocumentBase(), name);

画像データのインスタンスを作成しています。

1番目の引数は、appletタグのある、HTML文書(HTMLソース)のURLを指定します。
2番目の引数は、画像データのある、パス名+ファイル名を指定します。

drawImageメソッド

drawImage(img, 20, 20, this);

画像データを表示します。

1番目の引数は、画像データのインスタンスを指定します。
2番目の引数は、表示する画像の先頭の座標で、アプレットの表示領域の左上が基点になり、そこら右方向へのピクセル値です。
3番目の引数は、表示する画像の先頭の座標で、アプレットの表示領域の左上が基点になり、そこら下方向へのピクセル値です。
4番目の引数は、this(イメージオブザーバーといって、とにかくthisとします)。

◆ MS-DOSプロンプトからそのソースをコンパイルします。

ソースファイルが完成したら、MS-DOSプロンプトからそのソースをコンパイルします

D:\javalean>javac jlearn03.java
D:\javalean>dir /B
jlearn03.java
jlearn03.class

◆ APPLETタグで本クラスを指定したHTMLファイル(jleran03.htm)作成します。

jlearn03.htmの内容

<HTML>
<BODY>
<APPLET CODEBASE="../applet/" CODE="jlearn03.class" WIDTH="100" HEIGHT="100">
<PARAM NAME="imgName" VALUE="../img/chaichan.gif">
</APPLET>
</BODY>
</HTML>

        CODEBASE属性は、jlearn03.classとjlearn03.htmが同じフォルダーにあれば不要です。
        また、CODEBASE属性を指定しない場合、セキュリティ上の理由で参照可能なフォルダーは、
        現在の文書が含まれているフォルダーのサブフォルダーのみです。

さぁ! 三回目のAです。クリックしてアプレットを体験してください。

目次