まずは、何はともあれAppletを動かしてみましょう。
JavaのAppletは、java.appletパッケージの
Appletクラスのサブクラスとして定義する必要があります。
Appletを実行するWebブラウザやAppletViewerは、
Appletのインスタンスを生成し、
Appletクラスに定義されたメソッドを呼び出します。
Webブラウザ(およびApplet Viewer)から呼び出されるメソッドと、
呼び出されるタイミングは以下のとおりです。
メソッド名 呼ばれる契機 init()Appletのダウンロードが完了したとき。 start()Appletの実行を(再)開始するとき。
(Appletのダウンロード完了後、init()を呼んだ後に まず呼び出される。
その後はAppletのページに戻ったときに呼び出される。)stop()Appletの実行を一時停止するとき。
(Appletのページを離れるときに呼び出される。)destroy()Appletを破棄するとき。
(Webブラウザを終了するとき、 Appletを「Reload」するときに呼び出される。)
Appletを作る場合は、Appletクラスのサブクラスで、上記のメソッドを
必要に応じて「再定義」してあげればよいわけです。
スーパークラスのメソッドを再定義することをJavaの用語では オーバーライドと呼びます。 init()、start()、stop()、destroy()をオーバーライドしないとAppletクラスで定義されているメソッドが呼び出されます。Appletクラスでは、これらのメソッドは「何もしない」という 処理が定義されています。
では、さっそくApplet UpperHandの最初のバージョンを定義しましょう。
//============================================================================= // UpperHand.java // Copyright(c) 1998 Satoshi Kobayashi, All rights reserved. //============================================================================= import java.applet.*; //============================================================================= // class UpperHand // Applet UpperHand を定義するクラス。 //============================================================================= public class UpperHand extends Applet { //----------------------------------------------------------------------------- // クラス変数定義 //----------------------------------------------------------------------------- // バージョン表示用文字列 private final static String version = "UpperHand Game 1.1a1"; // 著作権表示文字列 private final static String copyright = "Copyright(c) 1998 Satoshi Kobayashi, All rights reserved."; //----------------------------------------------------------------------------- // メソッド定義 //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // public void init() // Appletの初期化処理を行う。 //----------------------------------------------------------------------------- public void init() { System.err.println("UpperHand.init() called."); } //----------------------------------------------------------------------------- // public void start() // Appletのページに移動したときの処理を行う。 //----------------------------------------------------------------------------- public void start() { System.err.println("UpperHand.start() called."); } //----------------------------------------------------------------------------- // public void stop() // Appletのページから離れるときの処理を行う。 //----------------------------------------------------------------------------- public void stop() { System.err.println("UpperHand.stop() called."); } //----------------------------------------------------------------------------- // public void destroy() // Appletを破棄するときの処理を行う。 //----------------------------------------------------------------------------- public void destroy() { System.err.println("UpperHand.destroy() called."); } //----------------------------------------------------------------------------- // public String getAppletInfo() // Appletのバージョン、著作件表示を返す。 //----------------------------------------------------------------------------- public String getAppletInfo() { return version + " " + copyright; } }
コメントがjavadocの形式になっていませんが、ご勘弁を...
(だってMRJ1.5にはjavadocがないんだもん。)
init()、start()、
stop()、destroy()は、
System.err.println()を使ってメッセージを出力しているだけです。
出力内容は、
Netscapeの場合「Java Console」、
Applet Viewerの場合「stderr」で確認できます。
メソッドの呼ばれるタイミングを実感してください。
getAppletInfo()も
Appletクラスで定義されているメソッドのオーバーライドです。
Appletに関する情報を文字列で返すように定義しましょう。
getAppletInfo()の返り値は、Applet Viewerでは
「Applet」メニューの「Info」で確認できます。
Appletをページに埋め込むときには、
HTMLの<APPLET>タグを使用します。
<APPLET>タグの基本的な使い方は以下のとおりです。
<APPLET
CODEBASE = "Appletの「ベース」URL"
CODE = "Appletのファイル名"
NAME = "Appletの名前"
WIDTH = "Appletの幅"
HEIGHT = "Appletの高さ"
>
CODEBASE属性には、
AppletがあるディレクトリのURLを指定します。
<A>タグのHREF属性と同じように
Appletを埋め込んだHTMLファイルからの相対パス指定も可能です。
したがって、
Appletを埋め込んだHTMLファイルとAppletのファイルが同じディレクトリにある場合は
記述する必要はありません。(だって書くべき情報がないでしょ)
CODE属性には、
Appletの(コンパイル済みの)ファイル名を指定します。
NAME属性には、
Appletのインスタンスの名前を指定します。
同じページ内のApplet同士が通信する場合、この名前を使用します。
Applet同士が通信しない場合は記述する必要はありません。
WIDTH属性、HEIGHT属性には、
Appletの幅、高さを指定します。
Appletにはデフォルトの大きさがないので、この属性は省略できません。
このほかにもいくつか使用できる属性がありますが省略します
(<IMG>タグの属性によく似ています)。
また、<APPLET>タグの間には、
Appletへのパラメータを指定する<PARAM>タグ、
Appletが実行できないブラウザが代わりに表示するHTMLが記述できます。
Javaソースコード (Ver. 1.1a1)