我正在研究一些 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);
}
}
最佳答案
您可能想设置自己的 MouseListener。您可以使用处理的 mouseClicked() 方法。然后循环遍历 Bla 实例并检查每个实例当时是否位于鼠标下方。只调用您想要触发的触发方法。
关于java - 处理:如何阻止所有监听器捕获鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404394/