LoginSignup
1

More than 5 years have passed since last update.

ProcessingでMouseListenerを使う

Posted at

MouseListenerとは

java.awt.event.MouseListener (引用元 : MouseListener (Java Platform SE 8 ) )

コンポーネント上の「関連する」マウス・イベント(プレス、リリース、クリック、フォーカス取得、フォーカス喪失)を受け取るためのリスナー・インタフェースです。マウスの移動およびドラッグを追跡するには、MouseMotionListenerを使用します。

簡単に要約するとマウスのクリックや、ドラッグ等を検知してくれるインターフェイスです。

実装方法

マウス・イベントの処理に関連するクラスは、このインタフェース(および含まれているすべてのメソッド)を実装するか、抽象クラスMouseAdapterを拡張します(関連するメソッドだけをオーバーライド)。

そのクラスから作成されたリスナー・オブジェクトは、コンポーネントのaddMouseListenerメソッドを使ってコンポーネントに登録されます。

  1. MouseListener インターフェイスを実装するか、 MouseAdapter を拡張する。
  2. addMouseListener メソッドを使ってコンポーネントに登録する。

この2.の処理は『登録されます』と書いてありますが、実際には自分で記述する必要があります。

JavaでのMouseListener

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

public class EventTest extends Applet implements MouseListener{
  public void init(){
    addMouseListener(this);
  }

  public void mouseEntered(MouseEvent e){
  }

  public void mouseExited(MouseEvent e){
  }

  public void mousePressed(MouseEvent e){
  }

  public void mouseReleased(MouseEvent e){
  }

  public void mouseClicked(MouseEvent e){
  }
}

引用元 : Javaでのイベント処理方法 - イベント処理 - Javaアプレット入門 - JavaDrive

これを参考にProcessingでも MouseListener インターフェイスを実装したクラスを作成していきましょう。

addMouseListenerjava.awt.Component のメソッドです。

public void addMouseListener(MouseListener l)

このコンポーネントからマウスイベントを受け取るために、指定されたマウスリスナーを追加します。

引用元 : Component (Java Platform SE 8 )

Processingで書こう

this.surface.getNative()processing.awt.PSurfaceAWT.SmoothCanvas のインスタンスを返します。これは java.awt.Component のサブクラスなので、 addMouseListener をすることができます。

import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.Component;

void setup() {
  size(300, 300);
  Component component = (Component) this.surface.getNative();
  component.addMouseListener(new MyMouseListener());
}

void draw() {
}

class MyMouseListener implements MouseListener {
  @Override
  public void mouseClicked(MouseEvent e) {
    println("Clicked");
  }

  @Override
  public void mouseEntered(MouseEvent e) {
    println("Entered");
  }

  @Override
  public void mouseExited(MouseEvent e) {
    println("Exited");
  }

  @Override
  public void mousePressed(MouseEvent e) {
    println("Pressed");
  }

  @Override
  public void mouseReleased(MouseEvent e) {
    println("Released");
  }
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1