我正在研究一些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);
}
}
答案 0 :(得分:3)
您可能想要设置自己的MouseListener。您可以使用Processing的mouseClicked()方法。然后循环遍历Bla的实例,并检查当前是否每个都在鼠标下。只调用你想要触发的触发方法。