Report#8


絵描き

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class jlearn09 extends Applet{
Graphics myGrp; //グラフィックスオブジェクトの宣言
int posX; //マウスのX座標の宣言
int posY; //マウスのY座標の宣言
Button myBtn; // ボタンオブジェクトの宣言
public void init() {
myGrp = getGraphics(); //グラフィックスオブジェクトのインスタンス取得
// マウスのボタンが押された時の位置(x,y)を取得する。(今回は線の開始点の座標)
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
posX = e.getX();
posY = e.getY();
}
});
// マウスでドラックした時の位置(x,y)を取得し、随時、その分、線を引く
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
myGrp.drawLine(posX, posY, e.getX(), e.getY());
posX = e.getX();
posY = e.getY();
}

});
myBtn = new Button("クリア"); // ボタンオブジェクトのインスタンス作成
// ボタンクリック時にrepaint();でクリアー表示
myBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
repaint();
}
});
//ボーダーレイアウトを設定
setLayout(new BorderLayout());

//ボーダーレイアウトの南へボタンを配置
add ("South", myBtn);
}
}

アプレット

『マウスのボタンが押された時の位置(x,y)を取得する』時と『マウスでドラックした時の位置(x,y)を取得し、随時、その分、線を引く』時に、アダプタークラスを利用しています。
これは、リスナーインターフェイス(interface)を implements してイベント処理クラスを作成する場合は、宣言されている全てのメソッドを実装する必要がありますが、しかし、アダプタークラスを継承して作成する場合は、処理したいイベントに対応するメソッドのみをオーバーライドすればよいことになり、通常このようにアダプタークラスを利用する方が普通になっています。
また、『ボタンクリック時』にアダプタークラスがないのは、ActionListenerクラスに関してはメソッドが一つしかないため実質不要だからです。
マウスイベントに対応するアダプタークラスは色々な種類があります