////////////////////////////////////////////////////////////////////////////////
//  << j301.java >>
//
//  アプレット(0):概説
//
//  ●アプレット
//
//  ・Webブラウザ上で実行されるクラスファイルをアプレットという。
//   Webサーバ上に存在し、Webブラウザからの依頼でWebブラウザに送られる。
//   文字や図形、画像を表示したり、ボタンやメニューをクリックして対応する処理
//   を実行したりすることができる。
//  ・アプレットはWebブラウザ側で実行されるため、ユーザのファイルを書き換え
//   たり、ユーザのプログラムを起動したりしないように制約が課せられている。
//   この制約をサンドボックスと呼ぶ。
//  ・Appletクラスのクラス階層(矢印の左が親クラス、右が子クラス)
//     java.lang.Object --> java.awt.Component --> java.awt.Container -->
//          java.awt.Panel --> java.applet.Applet
//
// ●アプレットの書き方
//
//   ・アプレットは、Appletクラスのサブクラスとして定義する。
//
//        import java.applet.Applet;                      
//         public class アプレット名 extends Applet {      
//           ・・・           
//           public void init() { ・・・ }
//           public void start() { ・・・ }
//           public void stop() { ・・・ }
//           public void destroy() { ・・・ }
//           public void paint() { ・・・ }
//           ・・・
//         }                                               
//
//  ・Appletクラスが定義しているメソッド(init,start,stop,destroy,paintなど)を
//      オーバーライドするのが基本である。
//     これらのメソッドは、自分で起動する必要はなく、Webブラウザから呼び出され
//     実行される。
//
// ●アプレットの動作
//
//  ・アプレットの記述を含むHTMLファイルに移動すると、
//   init,start,paintの順にメソッドが起動される。
//  ・他のページに移動すると、stop,destroyメソッドが起動され、アプレットの
//      動作を停止させる。
//  ・アプレットの記述されたページに戻ってくると、init,start,paintメソッドが
//   起動される。   
//
//      public void init()                                               
//        機能:アプレットのロード時に1回だけ呼び出される。             
//              デフォルトで何もしない。処理をオーバーライドする。       
//              変数の初期値設定、ボタンやメニューの設定などに使われる。 
//                                                                       
//      public void start()                                              
//        機能:アプレットの開始時と他のページに移動して戻って来るたびに 
//        呼び出される。                                           
//              デフォルトで何もしない。処理をオーバーライドする。       
//                                                                       
//      public void stop()                                               
//        機能:ブラウザで他のページに移動したときに呼び出される。       
//              デフォルトで何もしない。処理をオーバーライドする。       
//                                                                       
//      public void destroy()                                            
//        機能:アプレットのアンロード時に呼び出される。                 
//              デフォルトで何もしない。処理をオーバーライドする。       
//             
//      public void paint(Graphics g)       
//        機能:デフォルトで何もしない。描画処理をオーバーライドする。
//       描画処理が必要になると、システムから呼び出され、プログラマが
//       呼び出す必要はない。プログラマが描画のタイミングを指定する
//       時は、repaint()メソッドを使う。
//
//  ●java.appletパッケージ
//
//  ・関連ある複数のクラスをまとめたものを、パッケージまたはクラスライブラリ
//     という。java.appletパッケージは、アプレットを作成するときに必要なクラス
//   が含まれているパッケージである。
//     パッケージを使うときは、プログラムの先頭で、
//
//     import パッケージ名.クラス名;
//
//     と書く。
//     このようにすると、プログラム内でパッケージに含まれるクラスを使うときに、
//   本来は、パッケージ名.クラス名として書く必要があるが、パッケージ名を省略
//   できる。
//
//  ・ブラウザはアプレットから見るとパッケージの外になるので、アプレットには
//   public指定をしておき、どこからでも見えるようにしておく必要がある。
//   ブラウザから呼び出されるメソッド(init,start,stop,destroy,paint)に
//      ついても、同様の理由でpublic指定が必要となる。
//
//  ●アプレットの作成および実行手順
//
//  (1)テキストエディタでソースファイル(ap.java)を作成する。
//
//  (2)javacでコンパイルする。現在のディレクトリの下にクラスファイル
//     (ap.class)ができる。
//
//          % javac ap.java
//
//  (3)HTMLファイル(ap.htm)を現在のディレクトリの下に作成し、
//     appletタグを書く。
//
//          
//            ・・・
//            
//            
//            ・・・
//          
//
//          codeは、アプレットの名前(ap.class)
//        widthは、アプレットの窓の幅(ピクセル単位)
//        heightは、アプレットの窓の高さ(ピクセル単位)
//
//  (4)appletviewerでチェックする、またはブラウザでHTMLファイル
//          (ap.htm)を開く。
//
//          % appletviewer ap.htm
//
////////////////////////////////////////////////////////////////////////////////