WhiteBoard.java



import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

/** 絵を描くことができるWhiteBoardのクラス定義 */

public class WhiteBoard extends Applet {

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

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

   /** イベントを処理する Painterのオブジェクト */

         protected Painter painter=null;

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

        public void init() {

               painter = new Painter( this );
               addMouseListener( painter );        // painter を登録
               addMouseMotionListener( painter );  // painter を登録
        }

   /**
    * アプレットに「白い画用紙」の領域を描く。このアプレットでは、
    * update() を書き換えたため、最初の表示の時にだけ呼び出される
    */
        public void paint( Graphics g ) {
        	g.setColor( Color.white );
        	g.fillRect( 0, 0, getSize().width,
                            getSize().height );   //JDK1.0 では size()
        }

   /**
    * アプレットにグラフィックを描く。repaint() によって呼び出される
    * このアプレットでは通常とは異なり、以前の図形のクリアや、
    * paint() の呼び出しを行わない
    */
        public void update( Graphics g ) {
        	g.drawLine( x1, y1, x2, y2 );  // 線を描く
        	x1 = x2;
        	y1 = y2;
        }
}

/** WhiteBoardの描画処理をマウスで処理する Painterのクラス定義 */

class Painter implements MouseListener, MouseMotionListener {

   /** コンストラクタ */

      Painter( WhiteBoard wb ) {

         this.wb = wb;
      }

   /** 操作の対象となる WhiteBoard のオブジェクト */

      WhiteBoard wb;

   /** マウスボタンが押された時に自動的に呼び出される */
        public void mousePressed( MouseEvent evt ) {
                wb.x1 = evt.getX();
                wb.y1 = evt.getY();
        }

   /** マウスボタンが押されたまま移動した時に自動的に呼び出される */
        public void mouseDragged( MouseEvent evt ) {
                wb.x2 = evt.getX();
                wb.y2 = evt.getY();
        	wb.repaint();	  // update() を呼び出す
        }

   /** マウスボタンがクリックされた時に自動的に呼び出される */
        public void mouseClicked( MouseEvent evt ) {
        }

   /** マウスボタンが放された時に自動的に呼び出される */
        public void mouseReleased( MouseEvent evt ) {
        }

   /** マウスポインタが入った時に自動的に呼び出される */
        public void mouseEntered( MouseEvent evt ) {
        }

   /** マウスポインタが出た時に自動的に呼び出される */
        public void mouseExited( MouseEvent evt ) {
        }

   /** マウスボタンが移動した時に自動的に呼び出される */
        public void mouseMoved( MouseEvent evt ) {
        }
}