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