マウスの使い方

 


【例】マウスをクリックすると、その座標をコマンド画面に表示する

import java.applet.*;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class mouse1 extends Applet implements MouseListener
{
    int xx = 0, yy= 0;

    public void init() {
        addMouseListener(this);
    }

    public void mousePressed(MouseEvent e)  { // マウスボタンを押した時
        xx=e.getX();
        yy=e.getY();
        System.out.println("x = " + xx);
        System.out.println("y = " + yy);
        repaint();
    }

    public void mouseClicked(MouseEvent e)  {} // マウスボタンをクリックした時
    public void mouseEntered(MouseEvent e)  {} // マウスカーソルがアプレット領域に入った時
    public void mouseExited(MouseEvent e)   {} // マウスカーソルがアプレット領域から出た時
    public void mouseReleased(MouseEvent e) {} // マウスボタンを離した時

    public void paint(Graphics g){
        g.drawString("マウスでクリックしてください", 150, 40);
    }
}




【注意】
5つのマウスイベント

public void mousePressed(MouseEvent e) { }
public void mouseClicked(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }

は、使わないものがあっても全て記述しておく必要がある。

5つのイベントが記述されていないとエラーが出る。



【問題】
上の例をdrawStringを用いて書き直しなさい。

(ヒント)文字の表示はこちらを参照


実行例

【例】クリックした場所に円を表示する

import java.applet.*;
import java.awt.Graphics;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class mouse2 extends Applet implements MouseListener
{
    int xx = -10, yy= -10;

    public void init()
    {
        addMouseListener(this);
    }

    public void mousePressed(MouseEvent e)  { // マウスボタンを押した時
        xx=e.getX();
        yy=e.getY();
        repaint();
    }

    public void mouseClicked(MouseEvent e)  {} // マウスボタンをクリックした時
    public void mouseEntered(MouseEvent e)  {} // マウスカーソルがアプレット領域に入った時
    public void mouseExited(MouseEvent e)   {} // マウスカーソルがアプレット領域から出た時
    public void mouseReleased(MouseEvent e) {} // マウスボタンを離した時

    public void paint(Graphics g){
        g.drawString("マウスでクリックしてください", 150, 40);
        g.drawOval(xx - 20, yy - 20, 40, 40);
    }
}

実行例

【例】マウスをクリックすると円を描く。その際、チェックボックスで色(赤、青)を選べるようにする。

import java.applet.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Label;

public class mouse3 extends Applet implements MouseListener, ItemListener {
    int col = 1; //色
        int xx = 0,yy = 0;
        int yes=0, no=0;
    CheckboxGroup YesNo = new CheckboxGroup();
    Checkbox c1=new Checkbox("赤",YesNo,true);
    Checkbox c2=new Checkbox("青",YesNo,false);
    Label Q = new Label("色を選んでください");
        
    public void init() {
        addMouseListener(this);
        add(Q);
        add(c1);
        add(c2);
        c1.addItemListener(this);
        c2.addItemListener(this);
    }

    public void mousePressed(MouseEvent e)  { // マウスボタンを押した時
        xx=e.getX();
        yy=e.getY();
        repaint();
    }

    public void mouseClicked(MouseEvent e)  {} // マウスボタンをクリックした時
    public void mouseEntered(MouseEvent e)  {} // マウスカーソルがアプレット領域に入った時
    public void mouseExited(MouseEvent e)   {} // マウスカーソルがアプレット領域から出た時
    public void mouseReleased(MouseEvent e) {} // マウスボタンを離した時

    public void itemStateChanged(ItemEvent e) {
        if ( YesNo.getSelectedCheckbox()==c1 ) {
            col=1;
        } 
        if ( YesNo.getSelectedCheckbox()==c2 ){
            col=2;
        }
        repaint();
    }
        
    public void paint(Graphics g){
        if(col==1) g.setColor(Color.red);
        if(col==2) g.setColor(Color.blue);
        g.drawOval(xx-20, yy-20, 40, 40);
    }
}

実行例

【問題】
チェックボックスを3つ(円、四角、三角)表示し、
 円を押すと円
 四角を押すと四角形
 三角を押すと三角形
を表示するプログラムを作りなさい。
表示はマウスクリックした場所に行う。


実行例


【例】マウスをドラッグして図形を描く。

import java.applet.*;
import java.awt.event.*;
import java.awt.Color;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class mouse4 extends Applet implements MouseListener {
        int xb= 0, yb= 0; //開始座標
        int xe= 0, ye= 0; //終了座標
    Label Q = new Label("ドラッグしてください");
        
    public void init() {
        addMouseListener(this);
        add(Q);
    }

    public void mousePressed(MouseEvent e) {
        xb=e.getX();
        yb=e.getY();
    }

    public void mouseClicked(MouseEvent e)  {} // マウスボタンをクリックした時
    public void mouseEntered(MouseEvent e)  {} // マウスカーソルがアプレット領域に入った時
    public void mouseExited(MouseEvent e)   {} // マウスカーソルがアプレット領域から出た時
    public void mouseReleased(MouseEvent e) { // マウスボタンを離した時
        xe=e.getX();
        ye=e.getY();
        repaint();
        }

    public void paint(Graphics g) {
        int t;
        if(xb > xe) { //左向きにドラッグした時は、xb と xe を入れ替える
                t = xe;
                xe = xb;
                xb = t;
        }
        if(yb > ye) { //上向きにドラッグした時は、yb と ye を入れ替える
                t = ye;
                ye = yb;
                yb = t;
        }
        
        g.drawOval(xb,yb,xe-xb,ye-yb);
    }
}


実行例


【問題】
チェックボックスを3つ(円、四角、三角)表示し、  円を押すと円  四角を押すと四角形  三角を押すと三角形 を表示するプログラムを作りなさい。 図形の表示はマウスドラッグで行う。 実行例

【問題】
チェックボックスを2セット(円、四角、三角)(赤、青、緑)表示し、  円を押すと円  四角を押すと四角形  三角を押すと三角形  赤を押すと赤色  青を押すと青色  緑を押すと緑色 を表示するプログラムを作りなさい。 図形の表示はマウスドラッグで行う。 実行例