WhiteBoard2.java
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseMotionAdapter;
/** 絵を描くことができるWhiteBoard2のクラス定義 */
public class WhiteBoard2 extends Applet {
/** 描きたい線の両端の座標 */
protected int x1=0, y1=0, x2=0, y2=0;
/** イベントを処理するオブジェクト */
protected Pointer pointer=null;
protected Drawer drawer=null;
/** 初期設定のメソッド */
public void init() {
pointer = new Pointer( this );
addMouseListener( pointer ); // pointer を登録
drawer = new Drawer( this );
addMouseMotionListener( drawer ); // drawer を登録
}
/**
* アプレットに「白い画用紙」の領域を描く。このアプレットでは、
* 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の描画処理をマウスで処理する Pointerのクラス定義 */
class Pointer extends MouseAdapter {
/** コンストラクタ */
Pointer( WhiteBoard2 wb ) {
this.wb = wb;
}
/** 操作の対象となる WhiteBoard のオブジェクト */
WhiteBoard2 wb;
/** マウスボタンが押された時に自動的に呼び出される */
public void mousePressed( MouseEvent evt ) {
wb.x1 = evt.getX();
wb.y1 = evt.getY();
}
}
/** WhiteBoardの描画処理をマウスで処理する Drawerのクラス定義 */
class Drawer extends MouseMotionAdapter {
/** コンストラクタ */
Drawer( WhiteBoard2 wb ) {
this.wb = wb;
}
/** 操作の対象となる WhiteBoard のオブジェクト */
WhiteBoard2 wb;
/** マウスボタンが押されたまま移動した時に自動的に呼び出される */
public void mouseDragged( MouseEvent evt ) {
wb.x2 = evt.getX();
wb.y2 = evt.getY();
wb.repaint(); // update() を呼び出す
}
}