JAVA GUIプログラミング 第3回 イベント処理① マウスイベント
マウスのイベント処理 今日はマウスが画面に入ったり、出たり、クリックしたり、放したりしたときの処理を作るプログラムを作成していきます。
マウスのイベント 基本的に2種類あります。 ① mouseListener ② mouseMotionListener
①mouseListener マウスが画面に入ったとき マウスが画面から出たとき マウスをクリックしたとき マウスを押したとき ①mouseListener マウスが画面に入ったとき マウスが画面から出たとき マウスをクリックしたとき マウスを押したとき マウスを放したとき この5種類のイベントを処理します
サンプル① import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex4 extends JApplet implements MouseListener { int flag; public void init() { flag=0; getContentPane().addMouseListener(this); }
サンプル① public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); g.setColor(Color.black); if (flag==1) g.drawString("押したでしょ",100,100); if (flag==2) g.drawString("押しっぱなし",100,100); if (flag==3) g.drawString("放したでしょ",100,100); if (flag==4) g.drawString("出たでしょ",100,100); if (flag==5) g.drawString("入ったでしょ",100,100); }
サンプル① public void mouseClicked(MouseEvent me) { flag=1; repaint(); } public void mousePressed(MouseEvent me) flag=2; public void mouseReleased(MouseEvent me) flag=3;
サンプル① public void mouseExited(MouseEvent me) { flag=4; repaint(); } public void mouseEntered(MouseEvent me) flag=5;
解説 サンプル① import javax.swing.*; import java.awt.*; 解説 サンプル① import javax.swing.*; import java.awt.*; 前回ではimportするのはこの2つでした。 今回はイベントを扱うので、さらに次をimportします。 import java.awt.event.*;
解説 サンプル① public class ex4 extends JApplet implements MouseListener { 解説 サンプル① public class ex4 extends JApplet implements MouseListener { int flag; public void init() { flag=0; getContentPane().addMouseListener(this); }
解説 サンプル① public class ex4 extends JApplet implements MouseListener { 解説 サンプル① public class ex4 extends JApplet implements MouseListener { int flag; public void init() { flag=0; getContentPane().addMouseListener(this); } 今回はMouseListenerを使うので このように書きます。
解説 サンプル① public class ex4 extends JApplet implements MouseListener { 解説 サンプル① public class ex4 extends JApplet implements MouseListener { int flag; public void init() { flag=0; getContentPane().addMouseListener(this); } flagという整数型変数を用意します。 ここで宣言した変数は グローバル変数といってプログラムのどこでも 使うことができます。
解説 サンプル① public class ex4 extends JApplet implements MouseListener { 解説 サンプル① public class ex4 extends JApplet implements MouseListener { int flag; public void init() { flag=0; getContentPane().addMouseListener(this); } ここは初期設定の部分ですね
解説 サンプル① public class ex4 extends JApplet implements MouseListener { 解説 サンプル① public class ex4 extends JApplet implements MouseListener { int flag; public void init() { flag=0; getContentPane().addMouseListener(this); } flagを初めは0にしておきます
解説 サンプル① public class ex4 extends JApplet implements MouseListener { 解説 サンプル① public class ex4 extends JApplet implements MouseListener { int flag; public void init() { flag=0; getContentPane().addMouseListener(this); } ここはちょっと難しいですね・・ MouseListenerを使える状態にします。
解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); 解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); g.setColor(Color.black); if (flag==1) g.drawString("押したでしょ",100,100); if (flag==2) g.drawString("押しっぱなし",100,100); if (flag==3) g.drawString("放したでしょ",100,100); if (flag==4) g.drawString("出たでしょ",100,100); if (flag==5) g.drawString("入ったでしょ",100,100); }
解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); 解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); g.setColor(Color.black); if (flag==1) g.drawString("押したでしょ",100,100); if (flag==2) g.drawString("押しっぱなし",100,100); if (flag==3) g.drawString("放したでしょ",100,100); if (flag==4) g.drawString("出たでしょ",100,100); if (flag==5) g.drawString("入ったでしょ",100,100); } ここは絵を描く部分ですね
解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); 解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); g.setColor(Color.black); if (flag==1) g.drawString("押したでしょ",100,100); if (flag==2) g.drawString("押しっぱなし",100,100); if (flag==3) g.drawString("放したでしょ",100,100); if (flag==4) g.drawString("出たでしょ",100,100); if (flag==5) g.drawString("入ったでしょ",100,100); } まず色を白に設定し、 画面を白く塗りつぶします。
解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); 解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); g.setColor(Color.black); if (flag==1) g.drawString("押したでしょ",100,100); if (flag==2) g.drawString("押しっぱなし",100,100); if (flag==3) g.drawString("放したでしょ",100,100); if (flag==4) g.drawString("出たでしょ",100,100); if (flag==5) g.drawString("入ったでしょ",100,100); } 色を黒に設定します
解説 サンプル① public void paint(Graphics g) { drawstringとは文字を描く命令です。 解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); g.setColor(Color.black); if (flag==1) g.drawString("押したでしょ",100,100); if (flag==2) g.drawString("押しっぱなし",100,100); if (flag==3) g.drawString("放したでしょ",100,100); if (flag==4) g.drawString("出たでしょ",100,100); if (flag==5) g.drawString("入ったでしょ",100,100); } drawstringとは文字を描く命令です。 ここでは(100,100)から 押したでしょ という文字を描きます。
解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); 解説 サンプル① public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,500,500); g.setColor(Color.black); if (flag==1) g.drawString("押したでしょ",100,100); if (flag==2) g.drawString("押しっぱなし",100,100); if (flag==3) g.drawString("放したでしょ",100,100); if (flag==4) g.drawString("出たでしょ",100,100); if (flag==5) g.drawString("入ったでしょ",100,100); } Flagの場合に応じて文字を出します。 もし、flagが3であれば、「放したでしょ」という 文字を描きます。
解説 サンプル① public void mouseClicked(MouseEvent me) { flag=1; repaint(); 解説 サンプル① public void mouseClicked(MouseEvent me) { flag=1; repaint(); } この部分はマウスがクリックされたら コンピュータが自動的に実行します。
解説 サンプル① public void mouseClicked(MouseEvent me) { flag=1; repaint(); 解説 サンプル① public void mouseClicked(MouseEvent me) { flag=1; repaint(); } flagを1にします。
解説 サンプル① public void mouseClicked(MouseEvent me) { flag=1; repaint(); 解説 サンプル① public void mouseClicked(MouseEvent me) { flag=1; repaint(); } paintの部分をもう一度実行する命令です。
解説 サンプル① public void mousePressed(MouseEvent me) { flag=2; repaint(); 解説 サンプル① public void mousePressed(MouseEvent me) { flag=2; repaint(); } マウスが押されたときに自動的に呼び出されます。
解説 サンプル① public void mouseReleased(MouseEvent me) { flag=3; repaint(); 解説 サンプル① public void mouseReleased(MouseEvent me) { flag=3; repaint(); } マウスのボタンが放されたときに自動的に呼び出されます。
解説 サンプル① public void mouseExited(MouseEvent me) { flag=4; repaint(); } 解説 サンプル① public void mouseExited(MouseEvent me) { flag=4; repaint(); } マウスが画面の外に出たときに自動的に呼び出されます。
解説 サンプル① public void mouseEntered(MouseEvent me) { flag=5; repaint(); 解説 サンプル① public void mouseEntered(MouseEvent me) { flag=5; repaint(); } マウスが画面の中に入ったときに自動的に呼び出されます。
サンプル①のまとめ マウスが画面に入ると・・ Public void mouseEntered・・が呼び出され・・ flagが5になり・・ Public void paint・・の部分が呼び出され・・ 「入ったでしょ」が描かれる。
どうですか? MouseListenerを使った例はここまでです。 次はMouseMotionListenerを説明します。
②mouseMotionListener ②mouseMotionListener マウスが動いたとき マウスをドラッグしたとき この2つのイベントを処理します
サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); }
サンプル② public void paint(Graphics g) { g.fillOval(x-5,y-5,10,10); } public void mouseMoved(MouseEvent me) public void mouseDragged(MouseEvent me) x=me.getX(); y=me.getY(); repaint();
解説 サンプル② import javax.swing.*; import java.awt.*; 解説 サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); }
解説 サンプル② サンプル①と同じようにimportします import javax.swing.*; import java.awt.*; 解説 サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); } サンプル①と同じようにimportします
解説 サンプル② 今回はMouseMotionListenerをインプリメントします import javax.swing.*; 解説 サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); } 今回はMouseMotionListenerをインプリメントします
解説 サンプル② 整数型の変数x、yを用意します。 グローバル変数です。 import javax.swing.*; 解説 サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); } 整数型の変数x、yを用意します。 グローバル変数です。
解説 サンプル② 初期設定の部分ですね import javax.swing.*; import java.awt.*; 解説 サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); } 初期設定の部分ですね
解説 サンプル② とりあえず X=-100 Y=-100にしておきます import javax.swing.*; 解説 サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); } とりあえず X=-100 Y=-100にしておきます
解説 サンプル② 今回はここでmouseMotionListener を使えるようにしています。 import javax.swing.*; 解説 サンプル② import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ex5 extends JApplet implements MouseMotionListener { int x,y; public void init() { x=-100;y=-100; getContentPane().addMouseMotionListener(this); } 今回はここでmouseMotionListener を使えるようにしています。
解説 サンプル② public void paint(Graphics g) { g.fillOval(x-5,y-5,10,10); 解説 サンプル② public void paint(Graphics g) { g.fillOval(x-5,y-5,10,10); } この部分では(x、y)を中心に 半径5の円を塗りつぶしてますね
解説 サンプル② public void mouseMoved(MouseEvent me) { } 解説 サンプル② public void mouseMoved(MouseEvent me) { } public void mouseDragged(MouseEvent me) x=me.getX(); y=me.getY(); repaint();
解説 サンプル② public void mouseMoved(MouseEvent me) ここは、マウスが動いたときに 解説 サンプル② public void mouseMoved(MouseEvent me) { } public void mouseDragged(MouseEvent me) x=me.getX(); y=me.getY(); repaint(); ここは、マウスが動いたときに 自動的に呼び出されます。 今回は中に何も書いていません
解説 サンプル② public void mouseMoved(MouseEvent me) ここは、マウスがドラッグされたときに 解説 サンプル② public void mouseMoved(MouseEvent me) { } public void mouseDragged(MouseEvent me) x=me.getX(); y=me.getY(); repaint(); ここは、マウスがドラッグされたときに 自動的に呼び出されます。
解説 サンプル② public void mouseMoved(MouseEvent me) 現在のマウスのx座標を変数xに代入します。 { 解説 サンプル② public void mouseMoved(MouseEvent me) { } public void mouseDragged(MouseEvent me) x=me.getX(); y=me.getY(); repaint(); 現在のマウスのx座標を変数xに代入します。
解説 サンプル② public void mouseMoved(MouseEvent me) 現在のマウスのy座標を変数yに代入します { 解説 サンプル② public void mouseMoved(MouseEvent me) { } public void mouseDragged(MouseEvent me) x=me.getX(); y=me.getY(); repaint(); 現在のマウスのy座標を変数yに代入します
解説 サンプル② public void mouseMoved(MouseEvent me) Paintの部分を もう一度呼び出す。 { } 解説 サンプル② public void mouseMoved(MouseEvent me) { } public void mouseDragged(MouseEvent me) x=me.getX(); y=me.getY(); repaint(); Paintの部分を もう一度呼び出す。
まとめ マウスをドラッグすると・・ MouseDragged・・の部分が呼び出され・・ 変数x、yに現在のマウスの座標が代入され・・ ペイントの部分が呼び出され・・ 塗りつぶした円が描かれる・・
今日はここまで マウスのイベントを使う方法を演習しました。 いろいろ改造してプログラムを作ってみてください。