- Home ›
- Applet(アプレット)入門 ›
- アプレットの基本 ›
- HERE
基本メソッド
Javaプログラムではmainメソッドやコンストラクタなどが基本メソッドとして使われますが、アプレットでは次のメソッドを基本的に使います。
init start stop destroy paint repaint update
これらのメソッドは既にAppletクラス(又はその親クラス)で定義されているものですが、必要に応じてそのメソッドの中身を書き換えて使います。
initメソッド
initメソッドはアプレットが読み込まれた時に1回だけ呼び出されるメソッドです。アプレットに対する初期化の処理などはこのメソッドにて行います。例えば画像の読み込みなど1回だけ行えば済むような処理を行います。
init public void init()
ブラウザまたはアプレットビューアによって呼び出され、このアプレット がシステムにロードされたことを通知します。このメソッドは、start メ ソッドが最初に呼び出される前に常に呼び出されます。 Applet のサブクラスで初期化処理を行う場合は、このメソッドをオーバー ライドする必要があります。たとえば、スレッドを使用するアプレットの 場合は、init メソッドでスレッドを作成し、destroy メソッドでスレッド を破棄します。 Applet クラスのこのメソッドでは何も行いません。
上記の通りデフォルトでは何も行いません。必要に応じて下記のように書き換えることで、アプレットに対する初期化処理を行えます。
import java.applet.Applet; import java.awt.Graphics; public class AppletTest extends Applet{ public void init(){ /* 初期化処理 */ } public void paint(Graphics g){ /* 描画処理 */ } }
startメソッド
startメソッドはアプレットの開始時にinitメソッドの後に呼び出されるメソッドです。またアプレットが表示されなくなってから再度表示された時にも呼び出されます。こちらも主に初期化処理に使われますが、アプレットの実行を最初からやり直したりといった変数などの初期化に使う事になると思います。
start public void start()
ブラウザまたはアプレットビューアによって呼び出され、このアプレットの 実行を開始する必要があることを通知します。このメソッドは、init メソ ッドのあとに呼び出され、Web ページ上でアプレットがアクティブになるた びに呼び出されます。 アプレットを含む Web ページが表示されるたびになんらかの処理を行う場 合は、Applet のサブクラスではこのメソッドをオーバーライドする必要が あります。たとえば、アニメーションを含むアプレットの場合は、start メソッドでアニメーションを再生し、stop メソッドでアニメーションを停 止します。 Applet クラスのこのメソッドでは何も行いません。
上記の通り、デフォルトでは何も行いません。必要に応じて下記のように書き換えることで、アプレットに対する初期化処理を行えます。
import java.applet.Applet; import java.awt.Graphics; public class AppletTest extends Applet{ public void init(){ /* 初期化処理 */ } public void start(){ /* アプレット開始時の初期化処理 */ } public void paint(Graphics g){ /* 描画処理 */ } }
stopメソッド
stopメソッドはアプレットの終了時に呼び出されるメソッドです。例えばアプレットが表示されているWebページから、別のホームページへ移動したりする場合に呼び出されます。こちらは主にアプレットの後処理に使われます。
stop public void stop()
ブラウザまたはアプレットビューアによって呼び出され、このアプレットの 実行を停止する必要があることを通知します。このメソッドは、アプレット を含む Web ページの代わりに別の Web ページが表示されたとき、およびア プレットが破棄される直前に呼び出されます。 アプレットを含む Web ページが非表示になるたびになんらかの処理を行う 場合は、Applet のサブクラスではこのメソッドをオーバーライドする必要 があります。たとえば、アニメーションを含むアプレットの場合は、start メソッドでアニメーションを再生し、stop メソッドでアニメーションを停 止します。 Applet クラスのこのメソッドでは何も行いません。
上記の通り、デフォルトでは何も行いません。必要に応じて下記のように書き換えることで、アプレットに対する後処理を行えます。
import java.applet.Applet; import java.awt.Graphics; public class AppletTest extends Applet{ public void init(){ /* 初期化処理 */ } public void start(){ /* アプレット開始時の初期化処理 */ } public void stop(){ /* アプレット終了時の後処理 */ } public void paint(Graphics g){ /* 描画処理 */ } }
destroyメソッド
destroyメソッドはアプレットが完全に終了する時に呼び出されるメソッドです。タイミング的にはどのタイミングでと言うのは正確には分かりませんでした。
destroy public void destroy()
ブラウザまたはアプレットビューアによって呼び出され、このアプレットの 再生中に、割り当てられたすべてのリソースを破棄する必要があることを通 知します。destoroy メソッドの前に、stop メソッドが必ず呼び出されます。 破棄する前になんらかの処理を行う場合は、Applet のサブクラスではこの メソッドをオーバーライドする必要があります。たとえば、スレッドを使用 するアプレットの場合は、init メソッドでスレッドを作成し、destroy メ ソッドでスレッドを破棄します。 Applet クラスのこのメソッドでは何も行いません。
このメソッドを実行すると戻り値としてDimensionクラスのオブジェクトが帰ってきます。そこでDimensionクラスについて少し見ておきます。
上記の通り、デフォルトでは何も行いません。必要に応じて下記のように書き換えることで、アプレット破棄時の後処理を行えます。
import java.applet.Applet; import java.awt.Graphics; public class AppletTest extends Applet{ public void init(){ /* 初期化処理 */ } public void start(){ /* アプレット開始時の初期化処理 */ } public void stop(){ /* アプレット終了時の後処理 */ } public void destroy(){ /* アプレット破棄時の後処理 */ } public void paint(Graphics g){ /* 描画処理 */ } }
paintメソッド、updateメソッド、rapaintメソッド
この3つのメソッドはアプレットの描画に重要な役割を持ちます。paintメソッドはアプレットが表示される際に呼び出されpaintメソッド内に記述された処理を行います。例えば図形を描画したりといったことです。
repaintメソッドはプログラム側でアプレットを強制的に再描画したい場合に使います。paintメソッドはアプレットが一部隠れたりして再度表示が必要になった時には自動的に呼び出されますが、例えばアニメーションなどを表示しようとしてプログラム側で再描画を支持する場合に適切なタイミングでrepaintメソッドを呼び出すことで、アプレットの領域内を再度描画させることが出来るわけです。
updateメソッドはrepaintメソッドをプログラム側で呼び出した際にpaintメソッドが呼ばれる前に呼び出されるメソッドです。基本的な役割はpaintメソッドが描画処理を行う前にアプレットの描画領域内を一度綺麗にする処理を行っています。このメソッドの処理をうまく書き換えることで、画面にチラツキが無いように表示を切り替える事が出来ます。
これらの3つのメソッドはアプレットを利用する上で非常に重要なメソッドの為、後のページで詳しく見ていきます。
動作確認
では簡単なサンプルプログラムにて、それぞれのメソッドいつ呼び出されるのかを見てみましょう。
import java.applet.Applet; import java.awt.Graphics; import java.awt.Dimension; /* <applet code="AppletTest5.class" width="150" height="150"> </applet> */ public class AppletTest5 extends Applet{ public void init(){ System.out.println("init"); } public void start(){ System.out.println("start"); } public void stop(){ System.out.println("stop"); } public void destroy(){ System.out.println("destroy"); } public void paint(Graphics g){ System.out.println("paint"); } public void repaint(){ System.out.println("repaint"); } }
ブラウザでJavaコンソールを出した状態で、上記のアプレットが含まれるHTMLページをブラウザで表示します。
まずアプレットを含むページを最初にブラウザで読み込んだ時は下記のように「init」「start」「paint」が呼び出されます。
次にアプレットを含むブラウザを最小化します。最小化しただけではメソッドは呼び出されませんが、最小化したものを元の大きさに戻すと「paint」が呼び出されます。
次にブラウザで他のページを表示させます。すると「stop」「destroy」が呼び出されます。
次にブラウザの「戻る」ボタンでアプレットが含まれるページに戻ります。すると「init」「start」「paint」が呼び出されます。
ブラウザの上に他のアプリケーションの画面を表示させ、ブラウザの画面(アプレットの表示領域)がディスプレイの表示されないようにしてみます。隠しただけではメソッドは呼ばれませんが、上にあったアプリケーションを移動してブラウザの画面が見れるようにすると「paint」が呼び出されます。
このような感じで基本メソッドは呼ばれるようです。下記のページにて実際に試して頂くことができます。
( Written by Tatsuo Ikura )