26.1.9.18 マウス入力

こんどはマウスから位置の入力をしてみましょう.基本的にはボタン入力と同じようにやればいいのですが,「押した」ことだけを検出すればよいボタン入力とくらべると,位置情報や付属ボタンの状態などが入力できるマウスの扱いは極めて複雑になってしまいます.ここでは,ちょっと簡便にできる仕組みを使って,座標値を読み込む例を示します.マウスボタンを押すたびに,その座標値を表示し,その位置に小さな四角を表示します.

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Mouse1 extends Applet{
  int x = 0, y = 0;  // マウスの位置
                     // mousePressed 内で書き込まれ
                     // paint 内で使われる
  public void init(){
    addMouseListener(new M1()); 
  }
  class M1 extends MouseAdapter{ // Adapter クラスについては別述
     public void mousePressed(MouseEvent e){
        x = e.getX();
        y = e.getY();
        repaint();
     }
  }
  public void paint(Graphics g){
     g.drawString("("+ x +", "+ y +")", 10, 20); // 数値表示
     g.drawRect(x-5, y-5, 10, 10);               // その位置に四角
  }
}

fileMouse1.java (iso-2022-jp)

このプログラムだけでは,まだ動かないことに注意してください.

アプレットMouse1では,全体でマウスの処理指定であるMouseListenerを指定していません.そのかわり,内部で独自に定義したクラスM1が,"MouseAdapter"というクラスを使用しています.もともとの様子どおりのプログラミングは次のページを見て下さい.