Home > サンプル集 > アプレットサンプル集 > マウス入力(マウスイベント)サンプル
マウス入力(マウスイベント)サンプル
このページには、以下のサンプルを掲載しています。
下の項目をクリックをすると各サンプルにジャンプします。
※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
- マウスクリックのサンプル ( MouseSample01A.java、MouseSample01B.java )
- マウスカーソルがコンポーネントに入ってきた時 ( MouseSample02.java )
- マウスカーソルがコンポーネントから出た時 ( MouseSample03.java )
- マウスボタンが押された時 ( MouseSample04.java )
- マウスボタンが離された時 ( MouseSample05.java )
- ドラッグ ( MouseSample06.java )
- カーソル移動 ( MouseSample07.java )
- ホイール操作 ( MouseSample08.java )
- マウスの操作まとめ ( MouseSample09.java )
■マウスクリック
[ サンプルプログラムのソースコード - MouseSample01A.java - ]
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import javax.swing.JApplet;
- public class MouseSample01A extends JApplet implements MouseListener {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseListener(this);
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- int w = getWidth();
- int h = getHeight();
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, 10, 30);
- }
- public void update(Graphics g){
- paint(g);
- }
- public void mouseClicked(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "左ボタンクリック";
- message2 = "クリック地点 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "ホイールボタンクリック";
- message2 = "クリック地点 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "右ボタンクリック";
- message2 = "クリック地点 : X = " + x + " Y = " + y;
- repaint();
- }
- }
- public void mouseEntered(MouseEvent e) {
- }
- public void mouseExited(MouseEvent e) {
- }
- public void mousePressed(MouseEvent e) {
- }
- public void mouseReleased(MouseEvent e) {
- }
- }
|
上記のプログラムは、下のような書き方も出来ます。
マウスクリック(匿名クラス)
[ サンプルプログラムのソースコード - MouseSample01B.java - ]
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.JApplet;
- public class MouseSample01B extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseListener(new MouseAdapter(){
- public void mouseClicked(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "左ボタンクリック";
- message2 = "クリック地点 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "ホイールボタンクリック";
- message2 = "クリック地点 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "右ボタンクリック";
- message2 = "クリック地点 : X = " + x + " Y = " + y;
- repaint();
- }
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- int w = getWidth();
- int h = getHeight();
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, 10, 30);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスがクリックされた時になんらかの処理を行うには、アプレットクラスのaddMouseListenerメソッドを使ってマウスリスナーへの登録をします。
MouseSample01A.javaでは、18行目でMouseSample01B.javaでは、18行目〜40行目でマウスリスナーへの登録を行っています。
addMouseListenerメソッドの引数には、インターフェースMouseListenerをインプリメントしたクラスのオブジェクトを指定します。
MouseSample01A.javaでは、アプレットクラス本体にMouseListenerをインプリメントしているのでthisを指定しています。
インプリメントは、8行目のimplement MouseListenerで行っています。
一方、MouseSample01B.javaでは、addMouseListenerメソッドの引数の中で直接クラス定義を行っています。
addMouseListenerメソッドで定義したクラスは、MouseSample01Bクラスの中で定義されています。
このようにあるクラスの中で定義されているクラスを
内部クラスと言います。内部クラスは、名前を省略することが出来ます。
ここで、定義したクラスも名前を省略しています。
MouseAdapterと記述されているのは、ここで定義しているクラスの名前ではなく継承元のクラス名になります。
クラス名を省略したクラスは匿名クラスまたは、無名クラスと言います。
MouseAdapterクラスは、MouseListenerインターフェースをインプリメントしているのでaddMouseListenerメソッドでリスナー登録をすることができます。
マウスがクリックされた時の処理は、MouseListenerインターフェースのmouseClickedメソッドを呼び出すことで行われるため、このメソッドを
上書きすれば、マウスクリック時の処理が実装できます。MouseSample01A.javaでは、34行目〜54行目。
MouseSample01B.javaでは、19行目〜39行目がマウスクリック時の処理となります。
マウスがクリックされたときのマウスの状態を取得するには、mouseClickedメソッドの引数であるMouseEventオブジェクトで行います。
マウスがクリックされた場合、mouseClickedメソッドが呼び出され、MouseEventオブジェクトに、その時点でのマウスの状態が保持されます。
MouseEventオブジェクト.getModifiers()で、どのボタンが押されたのかと言う情報を取得できます。
MouseEventオブジェクト.getX()、MouseEventオブジェクト.getY()は、それぞれマウスクリックイベント発生時のX座標、Y座標を取得します。
■マウスカーソルがコンポーネントに入ってきた時
[ サンプルプログラムのソースコード - MouseSample02.java - ]
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.JApplet;
- public class MouseSample02 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseListener(new MouseAdapter(){
- public void mouseEntered(MouseEvent e) {
- x = e.getX();
- y = e.getY();
- message1 = "いらっしゃ〜い";
- message2 = "入室位置 : X = " + x + " Y = " + y;
- repaint();
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- int w = getWidth();
- int h = getHeight();
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, 10, 30);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスがコンポーネントの中に入ってきたときに何らかの処理を行うには、MouseListnerをインプリメントしたクラスにmouseEnteredメソッドを
実装することでおこないます。サンプルでは、19行目〜25行目になります。リスナーへの登録方法などは、 MouseSample01B.javaと同じです。
■マウスカーソルがコンポーネントから出た時
[ サンプルプログラムのソースコード - MouseSample03.java - ]
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.JApplet;
- public class MouseSample03 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseListener(new MouseAdapter(){
- public void mouseExited(MouseEvent e) {
- x = e.getX();
- y = e.getY();
- message1 = "ばいば〜い";
- message2 = "退出位置 : X = " + x + " Y = " + y;
- repaint();
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- int w = getWidth();
- int h = getHeight();
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, 10, 30);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスがコンポーネントの外に出たときに何らかの処理を行うには、MouseListnerをインプリメントしたクラスにmouseExitedメソッドを
実装することでおこないます。サンプルでは、18行目〜25行目になります。リスナーへの登録方法などは、 MouseSample01B.javaと同じです。
■マウスボタンが押された時
[ サンプルプログラムのソースコード - MouseSample04.java - ]
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.JApplet;
- public class MouseSample04 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseListener(new MouseAdapter(){
- public void mousePressed(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "左ボタンが押されたよ";
- message2 = "押された場所 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ) {
- x = e.getX();
- y = e.getY();
- message1 = "ホイールボタンがボタンが押されたよ";
- message2 = "押された場所 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ) {
- x = e.getX();
- y = e.getY();
- message1 = "右ボタンが押されたよ";
- message2 = "押された場所 : X = " + x + " Y = " + y;
- repaint();
- }
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- int w = getWidth();
- int h = getHeight();
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, 10, 30);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスボタンが押されたときに何らかの処理を行うには、MouseListnerをインプリメントしたクラスにmousePressedメソッドを
実装することでおこないます。サンプルでは、18行目〜25行目になります。リスナーへの登録方法などは、 MouseSample01B.javaと同じです。
クリック(mouseClicked)との違いは、クリックの場合、マウスボタンが押されて離された時に発生しますが、mousePressedは、ボタンを押した瞬間に呼び出されます。
■マウスボタンが離された時
[ サンプルプログラムのソースコード - MouseSample05.java - ]
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import javax.swing.JApplet;
- public class MouseSample05 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseListener(new MouseAdapter(){
- public void mouseReleased(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "左ボタンがボタンが離されたよ";
- message2 = "離された場所 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ) {
- x = e.getX();
- y = e.getY();
- message1 = "ホイールボタンがボタンが離されたよ";
- message2 = "離された場所 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ) {
- x = e.getX();
- y = e.getY();
- message1 = "右ボタンがボタンが離されたよ";
- message2 = "離された場所 : X = " + x + " Y = " + y;
- repaint();
- }
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- int w = getWidth();
- int h = getHeight();
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, 10, 30);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスボタンが離されたときに何らかの処理を行うには、MouseListnerをインプリメントしたクラスにmouseReleasedメソッドを
実装することでおこないます。サンプルでは、18行目〜25行目になります。リスナーへの登録方法などは、 MouseSample01B.javaと同じです。
■ドラッグ
[ サンプルプログラムのソースコード - MouseSample06.java - ]
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import javax.swing.JApplet;
- public class MouseSample06 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseMotionListener(new MouseMotionAdapter(){
- public void mouseDragged(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- x = e.getX();
- y = e.getY();
- message1 = "左ボタンドラッグ";
- message2 = "マウスの位置 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ) {
- x = e.getX();
- y = e.getY();
- message1 = "ホイールボタンドラッグ";
- message2 = "マウスの位置 : X = " + x + " Y = " + y;
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ) {
- x = e.getX();
- y = e.getY();
- message1 = "右ボタンドラッグ";
- message2 = "マウスの位置 : X = " + x + " Y = " + y;
- repaint();
- }
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- FontMetrics fm = getFontMetrics(getFont());
- int w = getWidth();
- int h = getHeight();
- int px = x > w - fm.stringWidth(message1)?w - fm.stringWidth(message1):x;
- int py = y < fm.getHeight()?fm.getHeight():y;
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, px, py);
- g2.drawString(message2, 10, 10);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスをドラッグしたときに何らかの処理を行うには、MouseMotionListnerをインプリメントしたクラスにmouseDraggedメソッドを
実装することでおこないます。サンプルでは、18行目〜25行目になります。
リスナーへの登録は、 MouseSample01B.javaでは、addMouseListenerで行いましたがドラッグの場合、addMouseMotionListenerで行います。
登録するクラスオブジェクトもMouseMotionListenerをインプリメントしたクラスのオブジェクトとなります。
■カーソル移動
[ サンプルプログラムのソースコード - MouseSample07.java - ]
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionAdapter;
- import javax.swing.JApplet;
- public class MouseSample07 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseMotionListener(new MouseMotionAdapter(){
- public void mouseMoved(MouseEvent e) {
- x = e.getX();
- y = e.getY();
- message1 = "マウス移動中";
- message2 = "マウスの位置 : X = " + x + " Y = " + y;
- repaint();
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- FontMetrics fm = getFontMetrics(getFont());
- int w = getWidth();
- int h = getHeight();
- int px = x > w - fm.stringWidth(message1)?w - fm.stringWidth(message1):x;
- int py = y < fm.getHeight()?fm.getHeight():y;
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, px, py);
- g2.drawString(message2, 10, 10);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスカーソルを移動したときに何らかの処理を行うには、MouseMotionListnerをインプリメントしたクラスにmouseMovedメソッドを
実装することでおこないます。サンプルでは、18行目〜25行目になります。
リスナーへの登録は、 MouseSample06.javaと同じです。
■ドラッグ
[ サンプルプログラムのソースコード - MouseSample08.java - ]
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseWheelEvent;
- import java.awt.event.MouseWheelListener;
- import javax.swing.JApplet;
- public class MouseSample08 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseWheelListener(new MouseWheelListener(){
- public void mouseWheelMoved(MouseWheelEvent e) {
- x = e.getX();
- y = e.getY();
- if ( e.getWheelRotation() > 0 ) {
- message1 = "マウスホイール ↓ダウン";
- } else if ( e.getWheelRotation() < 0 ) {
- message1 = "マウスホイール ↑アップ";
- }
- message2 = "マウスの位置 : X = " + x + " Y = " + y;
- repaint();
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- int w = getWidth();
- int h = getHeight();
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, 10, 30);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
マウスホイールを操作したときに何らかの処理を行うには、MouseWheelListnerをインプリメントしたクラスにmouseWheelMovedメソッドを
実装することでおこないます。サンプルでは、18行目〜25行目になります。
リスナーへの登録は、 MouseSample01B.javaでは、addMouseListenerで行いましたがドラッグの場合、addMouseWheelListenerで行います。
登録するクラスオブジェクトもMouseWheelListenerをインプリメントしたクラスのオブジェクトとなります。
■ドラッグ
[ サンプルプログラムのソースコード - MouseSample09.java - ]
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseWheelEvent;
- import java.awt.event.MouseWheelListener;
- import javax.swing.JApplet;
- import javax.swing.event.MouseInputAdapter;
- public class MouseSample09 extends JApplet {
- private static final long serialVersionUID = 1L;
- String message1 = "";
- String message2 = "";
- String message3 = "";
- String message4 = "";
- String message5 = "";
- int x = 0;
- int y = 0;
- public void init() {
- addMouseListener(new MouseInputAdapter(){
- public void mouseEntered(MouseEvent e) {
- message1 = "いらっしゃい";
- repaint();
- }
- public void mouseExited(MouseEvent e) {
- message1 = "ばいば〜い";
- message3 = "";
- message4 = "";
- message5 = "";
- repaint();
- }
- public void mouseClicked(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- x = e.getX();
- y = e.getY();
- message3 = "クリック地点 : X = " + x + " Y = " + y + " ";
- repaint();
- }
- }
- public void mousePressed(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- message4 = "左ボタンが押されたよ";
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ) {
- message4 = "ホイールボタンが押されたよ";
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ) {
- message4 = "右ボタンが押されたよ";
- repaint();
- }
- }
- public void mouseReleased(MouseEvent e) {
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- message4 = "";
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ) {
- message4 = "";
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ) {
- message4 = "";
- repaint();
- }
- }
- });
- addMouseMotionListener(new MouseInputAdapter() {
- public void mouseMoved(MouseEvent e) {
- x = e.getX();
- y = e.getY();
- message2 = "マウス座標 : X = " + x + " Y = " + y;
- message5 = "マウス移動中";
- repaint();
- }
- public void mouseDragged(MouseEvent e) {
- x = e.getX();
- y = e.getY();
- message2 = "マウス座標 : X = " + x + " Y = " + y;
- if ( e.getModifiers() == MouseEvent.BUTTON1_MASK ){
- message5 = "左ボタンドラッグ中";
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON2_MASK ) {
- x = e.getX();
- y = e.getY();
- message5 = "ホイールボタンドラッグ中";
- repaint();
- } else if ( e.getModifiers() == MouseEvent.BUTTON3_MASK ) {
- x = e.getX();
- y = e.getY();
- message5 = "右ボタンドラッグ中";
- repaint();
- }
- }
- });
- addMouseWheelListener(new MouseWheelListener(){
- public void mouseWheelMoved(MouseWheelEvent e) {
- if ( e.getWheelRotation() > 0 ) {
- message4 = "マウスホイール ↓ダウン";
- } else if ( e.getWheelRotation() < 0 ) {
- message4 = "マウスホイール ↑アップ";
- }
- repaint();
- }
- });
- }
- public void paint(Graphics g) {
- Graphics2D g2 = (Graphics2D)g;
- FontMetrics fm = getFontMetrics(getFont());
- int w = getWidth();
- int h = getHeight();
- int sw = fm.stringWidth(message5);
- int sh = fm.getHeight();
- int px = x > w - sw ? w - sw : x;
- int py = y < sh ? sh : y;
- g2.clearRect(0, 0, w, h);
- g2.drawString(message1, 10, 10);
- g2.drawString(message2, w - fm.stringWidth(message2), 10);
- g2.drawString(message3, 10, 30);
- g2.drawString(message4, 10, 50);
- g2.drawString(message5, px, py);
- }
- public void update(Graphics g){
- paint(g);
- }
- }
|
[ サンプルプログラムの解説 ]
MouseSample01〜MouseSample08のまとめです。このサンプルでは、それぞれのマウスイベントを組み合わせています。
リスナーへの登録は、基本的にこれまでのサンプルと同じです。
|