处理:如何阻止所有侦听器捕获鼠标事件

时间:2014-08-20 12:13:05

标签: java mouseevent processing

我正在研究一些GUI元素,其中一些是重叠的,并且都可以捕获鼠标事件。是否有办法仅通过“最顶层”元素捕获鼠标事件?

Bla a,b;
void setup(){
  size(300,300);
  a=new Bla("a",this);
  b=new Bla("b",this);
}
void draw(){
  background(0xffffffff);
  a.draw(10,10);
  b.draw(25,25);
}

public class Bla{
  String name;
  float x,y;
  PApplet p;
  Bla(String name, PApplet p){
    this.name=name;
    this.p=p;
    p.registerMethod("mouseEvent",this);
  }
  public void mouseEvent(MouseEvent e){
    float mx=e.getX();
    float my=e.getY();
    if(mx>x && mx<x+50 && my>y && my<y+50){
      if(e.getAction()==MouseEvent.RELEASE){
        print(name);
      }
    }
  }
  public void draw(float x, float y){
    this.x=x;
    this.y=y;
    p.fill(0xffffffff);
    p.stroke(0xff000000);
    p.rect(x,y,50,50);
  }
}

1 个答案:

答案 0 :(得分:3)

您可能想要设置自己的MouseListener。您可以使用Processing的mouseClicked()方法。然后循环遍历Bla的实例,并检查当前是否每个都在鼠标下。只调用你想要触发的触发方法。