JAVA GUIプログラミング

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に現在のマウスの座標が代入され・・
ペイントの部分が呼び出され・・
塗りつぶした円が描かれる・・
今日はここまで
マウスのイベントを使う方法を演習しました。
いろいろ改造してプログラムを作ってみてください。