KeyPaper.java



import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Event;

/** マウスの操作で絵を描くことができるKeyPaperのクラス定義 */

public class KeyPaper extends Applet {

   /** 描きたい線の色を記憶する */

         protected [         ] color;

   /** 画面をクリアすべきかどうかを示すフラグ */

         protected [         ] clearFlag = true;

   /** 描きたい線の両端の座標 */

         protected int x1=0, y1=0, x2=0, y2=0;


   /** 初期設定のメソッド */

        public void init() {

               [         ] = Color.red;  // 初期値は赤色
        }

   /**
    * アプレットに「白い画用紙」の領域を描く。
    */
        public void paint( Graphics g ) {
               g.setColor( Color.white );
               g.fillRect( 0, 0, size().width, size().height );
               clearFlag = [         ];  // クリア処理が終わった
        }

   /**
    * アプレットにグラフィックを描く。repaint() によって呼び出される
    */
        public void update( Graphics g ) {

               if( [         ] == true ) {  // 画面クリアを実行
                   paint( g );
               }
               else {
                   g.setColor( color );           // 線の色の設定
                   g.drawLine( x1, y1, x2, y2 );  // 線を描く
                   x1 = x2;
                   y1 = y2;
               }
        }

   /** マウスボタンが押された時に自動的に呼び出される */

        public boolean mouseDown( Event evt,  int x, int y ) {
               x1 = x;
               y1 = y;
               return true;
        }

   /** マウスボタンが押されたまま移動した時に自動的に呼び出される */

        public boolean mouseDrag( Event evt,  int x, int y ) {
               x2 = x;
               y2 = y;
               repaint();          // update() を呼び出す
               return true;
        }

   /** キーが押された時に自動的に呼び出される */

        public boolean [         ]( Event evt, int key ) {

               [         ]( (char)key ) {

                    [         ] 'r':
                             color = Color.red;
                             break;
                    [         ] 'g':
                             color = Color.green;
                             break;
                    [         ] 'b':
                             color = Color.blue;
                             break;
                    [         ] 'c':
                             clearFlag = true;
                             repaint();    // update()を呼び出す
                             break;
                    default:
               }
               return true;
        }
}