2)アプレットのメソッドについて答えなさい。
3)次のプログラムは、 KeyPaper というクラス名のアプレットです。 このアプレットは、 マウスのドラッグの操作でアプレットの上に絵を描くことができます。 さらにキーボードの操作で線の色を変えたり、画面のクリアを行ったりできます。 空欄を埋めて完成させなさい。
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 [ ]( Graphics g ) {
if( [ ] == true ) { // 画面クリアを実行
paint( g );
}
else {
g.setColor( color ); // 線の色の設定
g.drawLine( x1, y1, x2, y2 ); // 線を描く
x1 = x2;
y1 = y2;
}
}
/** マウスボタンが押された時に自動的に呼び出される */
public boolean [ ]( Event evt, int x, int y ) {
x1 = x;
y1 = y;
return true;
}
/** マウスボタンが押されたまま移動した時に自動的に呼び出される */
public boolean [ ]( 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;
}
/** マウスのポインタが入った時にキーボードフォーカスを要求する */
public boolean mouseEnter( Event evt, int x, int y ) {
requestFocus(); // キーボードフォーカスを要求する
return true;
}
}