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

标签 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);
  }
}

最佳答案

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

关于java - 处理:如何阻止所有监听器捕获鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25404394/

相关文章:

java - Scala api 和 java 兼容性,你必须重新映射吗?

java - 谁应该调用 ByteBuffer.flip()

javascript - Kinectisj : Issue where mouse trail remains(Layer issue)

python - 在opencv Python中拖动鼠标画线并获取线的端点坐标

java - 贪吃蛇游戏 - 只绘制蛇的最大长度为 2

java - Spring 启动: InvalidTypeIdException When Trying to Parse Json

java - 如何获取 Spring Data 上的总页数?

java - 如何将A java文件与B java文件连接

java - 如何避免展开 map 时标记标题重叠?

java - 碰撞避免示例或帮助