2009年5月6日水曜日

Java AWT マウス操作に関するイベント

MouseListener
mouseClickedマウスボタンをクリックしたときに発生する
mouseEnteredマウスボタンが領域内に入った時に発生する
mousePressedマウスボタンが領域外に出たときに発生する
mouseReleasedマウスボタンが放されたときに発生する


MouseMotionListener
mouseDraggedマウスがドラッグされている間、常に発生し続ける
mouseMovedマウスが動かされている間、常に発生する


MouseWheelListener
mouseWheelMoveマウスが回転される間、常に発生する


package MyPackage1;

import java.awt.*;
import java.awt.event.*;

public class MouseEventSample01 {
/*
* エントリーポイント
*/
public static void main(String args[]){
new MouseEventSample01();
}

Frame frm;
Label lbl1;
/*
* コンストラクタ
*/
public MouseEventSample01(){
//フレームを作成します。
frm = new Frame("MouseEventSample01");
frm.setSize(300,300);
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
//フレームにイベントリスナーを追加します。
frm.addMouseListener(new MouseAdapter_frm());
frm.addMouseMotionListener(new MouseMotionAdapter_frm());
frm.addMouseWheelListener(new MouseWheelAdapter_frm());
//ラベルを作成します。
lbl1 = new Label();
//フレームにコンポーネントを追加します。
frm.add(lbl1,BorderLayout.NORTH);
//フレームを表示します。
frm.setVisible(true);
}

/*
* フレームのMouseListener
*/
private class MouseAdapter_frm implements MouseListener{

@Override
public void mouseClicked(MouseEvent arg0) {
//マウスボタンをクリックしたときに発生する
if (arg0.getClickCount() == 1) {
lbl1.setText("mouseClick:SingleClick X=" + arg0.getX() + " Y="+ arg0.getY());
}else if (arg0.getClickCount() == 2) {
lbl1.setText("mouseClick:DoubleClick X=" + arg0.getX() + " Y="+ arg0.getY());
}   
}

@Override
public void mouseEntered(MouseEvent arg0) {
// マウスボタンが領域内に入った時に発生する
}

@Override
public void mouseExited(MouseEvent arg0) {
// マウスボタンが領域外に出たときに発生する
}

@Override
public void mousePressed(MouseEvent arg0) {
// マウスボタンが押されたときに発生する
}

@Override
public void mouseReleased(MouseEvent arg0) {
// マウスボタンが放されたときに発生する
}
}

/*
* フレームのMouseMotionListener
*/
private class MouseMotionAdapter_frm implements MouseMotionListener{

@Override
public void mouseDragged(MouseEvent arg0) {
// マウスがドラッグされている間、常に発生し続ける
}

@Override
public void mouseMoved(MouseEvent arg0) {
// マウスが動かされている間、常に発生する
lbl1.setText("mouseMoved:X=" + arg0.getX() + " Y="+ arg0.getY());
}
}

/*
* フレームのMouseWheelAdapter
*/
private class MouseWheelAdapter_frm implements MouseWheelListener{

@Override
public void mouseWheelMoved(MouseWheelEvent arg0) {
// マウスが回転される間、常に発生する
lbl1.setText("mouseWheelMoved:ホイール数=" + arg0.getWheelRotation());
}

}
}


MouseAdapterクラスはMouseListenerインターフェースを実装済みのクラスです。
MouseMotionAdapterクラスはMouseMotionListenerインターフェースを実装済みのクラスです。
各Adapterクラスはあらかじめ各Listenerを実装し、すべてのメソッドをオーバライド済みにしたクラスです。
必要なメソッドのみオーバーライドして使用できます。
※MouseWheelListenerインターフェースはJava2 1.4から導入されたものでを実装済みのクラスはありません。
package MyPackage1;

import java.awt.*;
import java.awt.event.*;

public class MouseEventSample02 {

/*
* エントリーポイント
*/
public static void main(String args[]){
new MouseEventSample02();
}

Frame frm;
Label lbl1;
/*
* コンストラクタ
*/
public MouseEventSample02(){
//フレーム作成します。
frm = new Frame("MouseEventSample02");
frm.setSize(300,300);
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent ev){
System.exit(0);
}
});
//フレームにイベントリスナーを追加します。
frm.addMouseListener(new MouseAdapter_frm());
frm.addMouseMotionListener(new MouseMotionAdapter_frm());  
//ラベルを作成します。
lbl1 = new Label();
//フレームにコンポーネントを追加します。
frm.add(lbl1,BorderLayout.NORTH);
//フレームを表示します。
frm.setVisible(true);
}

/*
* フレームのMouseAdapterリスナー
*/
private class MouseAdapter_frm extends MouseAdapter{
public void mouseClicked(MouseEvent ev) {
//マウスボタンをクリックしたときに発生する
if (ev.getClickCount() == 1) {
lbl1.setText("mouseClick:SingleClick X=" + ev.getX() + " Y="+ ev.getY());
}else if (ev.getClickCount() == 2) {
lbl1.setText("mouseClick:DoubleClick X=" + ev.getX() + " Y="+ ev.getY());
}      
}
}
/*
* フレームのMouseMotionリスナー
*/
private class MouseMotionAdapter_frm extends MouseMotionAdapter{
public void mouseMoved(MouseEvent ev) {
// マウスが動かされている間、常に発生する
lbl1.setText("mouseMoved:X=" + ev.getX() + " Y="+ ev.getY());   
}
}
}

0 件のコメント: