Processing依存からの脱却−イベントリスナー(4)

 今回はマウスに関するイベントリスナーをひたすらメモ的に書いていきます。

1.マウスに関連するイベントリスナー
マウスに関連するイベントリスナーは3種類あります。一つ目は、マウスボタンに関するイベント、二つ目はマウスポインタの移動に関するイベント、三つ目はマウスホイールに関するイベントです。

//マウスボタンに関するイベント
コンポーネント.addMouseListener(MouseListener);

//マウスポインタの移動に関するイベント
コンポーネント.addMouseMotionListener(MouseMotionListener);

//マウスホイールに関するイベント
コンポーネント.addMouseWheelListener(MouseWheelListener);


MouseListenerのメソッド

//マウスボタンをクリックしたとき
public void mouseClicked(MouseEvent e)

//マウスボタンが領域内に入るとき
public void mouseEntered(MouseEvent e)

//マウスボタンが領域外に出るとき
public void mouseExited(MouseEvent e)

//マウスボタンが押されるとき
public void mousePressed(MouseEvent e)

//マウスボタンが放されるとき
public void mouseReleased(MouseEvent e)


MouseMotionListenerのメソッド

//マウスをドラッグしている間
public void mouseDragged(MouseEvent e)

//マウスが動いている間
public void mouseMoved(MouseEvent e)


MouseWheelListenerのメソッド

//ホイールが回転されている間
public void mouseWheelMoved(MouseEvent e)

マウスイベントはどこで何の右/左クリックされたとかいう情報が大事になってきます。そのためMouseEventクラスにはそのような情報を得るためのメソッドが用意されています。

MouseEventの主要なメソッド

//イベントが発生したマウスボタンを表すintを返す
MouseEvent.getButton();

//マウスボタンがクリックされた回数をintで返す
MouseEvent.getClickCount();

//イベントが発生したマウスポインタの位置をPointで返す
MouseEvent.getPoint();

//イベントが発生したマウスポインタのX座標をintで返す
MouseEvent.getX();

//イベントが発生したマウスポインタのY座標をintで返す
MouseEvent.getY();

//イベント発生時にShift,Alt,メタキー,Ctrlが押されているかをbooleanで返す。
MouseEvent.isShiftDown();
MouseEvent.isAltDown();
MouseEvent.isMetaDown();
MouseEvent.isControlDown();

これを利用するとこんなプログラムが書けるようになります。

public class Main extends Frame{
	Label l;

	public Main(){
		super();
		this.setSize(200, 100);
		l = new Label();
		this.add(l,BorderLayout.SOUTH);
		this.addMouseListener(new MyMouseListener());
		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});

		this.setVisible(true);
	}

	public static void main(String[] args){
		new Main();
	}

	class MyMouseListener extends MouseAdapter{
		public void mouseClicked(MouseEvent e){
			int x = e.getX();
			int y = e.getY();

			String str = "X:" + Integer.toString(x) 
				+ "  Y:" + Integer.toString(y);

			l.setText(str);
		}
	}
}

これはクリックしたときのマウスのウィンドウ内の位置を表示させるプログラムです。ここで、MouseAdapterというものが継承されていますが、これはMouseListenerが予めimplemntsされているクラスで、これを継承することによって、簡単にMouseListenerが組み込めます。このようなクラスは他にMouseMotionListenerが予め組み込まれた、MouseMotionAdapterがあります。

マウスの操作ができるようになると、おもしろいプログラムが組めそうですね。