3 テンプレートのカスタマイズ
3.2 新規機能作成方法
3.2.1 イベントクラスの作成
イベントクラスとはコンポーネント上で発生するマウスイベントを受け取り座標 の取得、ラバーバンドの表示や点の取得など行うクラスです。イベントクラスを作成 するにはまずEv_Mouse_IFインタフェースを実装する必要があります。
Ev_Mouse_IF インタフェースは MouseListener、MouseMotionListener を継承して おり、以下のメソッドを定義しています。コンポーネントからマウイベントを受け取 り、イベント処理を行い、処理中に保持した座標、図形などをアクションクラスに渡 す仕組みとなっています。
リスト3-11 Ev_Mouse_IFインタフェース /**マウス・クリックイベント。
public void mouseClicked(MouseEvent e) ; /** マウス・プレスイベント。
public void mousePressed(MouseEvent e) ; /** マウス・リリースイベント。
public void mouseReleased(MouseEvent e) ; /**マウス・エンターイベント。
public void mouseEntered(MouseEvent e) ; /** マウス・イグジットイベント。
public void mouseExited(MouseEvent e) ; /**マウス・ドラッグイベント。
public void mouseDragged(MouseEvent e) ; /** マウス・ムーブイベント。
public void mouseMoved(MouseEvent e) ; /**イベント内で保持した全座標を取得します。
public psvPoint[] getAllPoint();
/**イベント内で最初に取得した座標を取得します。
public psvPoint getFirstPoint();
/**イベント内で最後に取得した座標を取得します。
public psvPoint getLastPoint();
/**イベント内で取得した座標から
public psvRegionBounds getRegionBounds();
/**初期化。
public void clear();
/**イベント内で取得した図形オブジェクトを渡します。
public psvShape getShape() ;
テンプレートではEv_Mouse_IFインタフェースを実装したデフォルトイベントク ラス(Ev_Default_Mouse)を用意しています。Ev_Default_Mouse クラスを継承し イベントクラスを作成することで処理に必要のないメソッドを省略することができ ます。
(1) 作成例
任意点スクロール機能のイベントクラスとして、スクロールの基準となる座標を 取得するEv_Mouse_Pointクラスを作成します。
Ev_Mouse_Pointを作成にあたりデフォルトイベントクラスEv_Default_Mouseク ラスを継承し作成します。
リスト3-12 Ev_Mouse_Pointクラス作成例 (クリックした座標を取得)
/*マウス座標取得イベントクラス*/
public class Ev̲Mouse̲Point extends Ev̲Default̲Mouse {
private psvPoint ̲p,̲p2 ;
private Ac̲Mouse̲IF ̲ac; //アクションクラス private Mg̲Information̲IF ̲info; //情報管理クラス private psvJavaScreen ̲screen; //スクリーン
/** デフォルトコンストラクタ・座標取得イベントオブジェクトを構築します。*/
public Ev̲Mouse̲Point(){}
/** 座標取得イベントオブジェクトを構築します。*/
public Ev̲Mouse̲Point(Ac̲Mouse̲IF ac) {
̲ac = ac;
̲info = ̲ac.getInformation();
̲screen = ̲info.get̲screen();
}
/**アクションクラス設定 */
public void setAction(Ac̲Mouse̲IF ac) {
̲ac = ac;
̲info = ̲ac.getInformation();
̲screen = ̲info.get̲screen();
}
/**マウス・クリックイベント。 */
public void mouseClicked(MouseEvent e) {
̲p = ̲screen.dc̲to̲wc (e.getX(),e.getY());
̲ac.mouseClicked(this);
}
/**イベント内で取得した座標を取得します。*/
public psvPoint[] getAllPoint(){
psvPoint[] p = {̲p};
return p;
} ― ―続く― ―
リスト3-13 Ev_Mouse_Pointクラス作成例 続き /**イベント内で取得した座標をクリアします。*/
public void clear(){
̲p=null;
}
/**イベント内で最初に取得した座標を取得します。*/
public psvPoint getFirstPoint(){
return ̲p;
}
/**イベント内で最後に取得した座標を取得します。*/
public psvPoint getLastPoint(){
return ̲p;
}
/**イベント内で取得した座標から矩形の領域を取得します。*/
public psvRegionBounds getRegionBounds(){
return new psvRegionBounds(̲p.x,̲p.y,̲p.x,̲p.y);
}
/** 終了処理*/
public void close(){}
}
イベント処理で必要な情報はアクションクラスから情報管理クラスを受け取り 取得します。情報管理クラスはスクリーン、キャンバスなど、イベントやアクショ ン処理に必要な情報を管理しており、任意の情報も管理させることができます。
作成するイベントクラスを定義ファイルからテンプレートに設定する場合、必ずデ フォルトコンストラクタを作成してください。