◆画像データとパラメータ
文字列、線、四角形、円ときたら、つぎは、やはり画像をアプレットで表示してみましょう。
違いは、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です。クリックしてアプレットを体験してください。