KeyPaper11.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;
import java.awt.event.[ ];
import java.awt.event.[ ];
/** マウスの操作で絵を描くことができるKeyPaper11のクラス定義 */
public class KeyPaper11 extends Applet
implements MouseListener, MouseMotionListener, [ ] {
/** 描きたい線の色を記憶する */
protected [ ] color;
/** 画面をクリアすべきかどうかを示すフラグ */
protected [ ] clearFlag = true;
/** 描きたい線の両端の座標 */
protected int x1=0, y1=0, x2=0, y2=0;
/** 初期設定のメソッド */
public void init() {
addMouseListener( this ); // 自分自身を登録
addMouseMotionListener( this );// 自分自身を登録
[ ]( this ); // 自分自身を登録
color = Color.red; // 初期値は赤色
}
/**
* アプレットに「白い画用紙」の領域を描く。このアプレットでは、
* update() を書き換えたため、最初の表示の時にだけ呼び出される
*/
public void paint( Graphics g ) {
g.setColor( Color.white );
g.fillRect( 0, 0, getSize().width, getSize().height );
[ ] = false; // クリア処理が終わった
}
/**
* アプレットにグラフィックを描く。repaint() によって呼び出される
* このアプレットでは通常とは異なり、以前の図形のクリアや、
* paint() の呼び出しを行わない
*/
public void update( Graphics g ) {
if( [ ] == true ) { // 画面クリアを実行
paint( g );
}
else {
g.[ ]( color ); // 線の色の設定
g.[ ]( x1, y1, x2, y2 ); // 線を描く
x1 = x2;
y1 = y2;
}
}
/** マウスボタンが押された時に自動的に呼び出される */
public void [ ]( MouseEvent evt ) {
x1 = evt.getX();
y1 = evt.getY();
}
/** マウスボタンが押されたまま移動した時に自動的に呼び出される */
public void [ ]( MouseEvent evt ) {
x2 = evt.getX();
y2 = evt.getY();
repaint(); // update() を呼び出す
}
/** マウスボタンがクリックされた時に自動的に呼び出される */
public void mouseClicked( MouseEvent evt ) {
}
/** マウスボタンが放された時に自動的に呼び出される */
public void mouseReleased( MouseEvent evt ) {
}
/** マウスポインタが入った時に自動的に呼び出される */
public void [ ]( MouseEvent evt ) {
requestFocus(); // キーボードフォーカスを要求
}
/** マウスポインタが出た時に自動的に呼び出される */
public void mouseExited( MouseEvent evt ) {
}
/** マウスボタンが移動した時に自動的に呼び出される */
public void mouseMoved( MouseEvent evt ) {
}
/** キーが入力された時に自動的に呼び出される */
public void [ ]( [ ] evt ) {
switch( evt.getKeyChar() ) {
case 'r':
color = Color.red;
break;
case 'g':
color = Color.green;
break;
case 'b':
color = Color.blue;
break;
case 'c':
clearFlag = true;
repaint(); // update()を呼び出す
break;
default:
}
}
/** キーが押された時に自動的に呼び出される */
public void keyPressed( KeyEvent evt ) {
}
/** キーが放された時に自動的に呼び出される */
public void keyReleased( KeyEvent evt ) {
}
}