まずは、何はともあれ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)