首页 > 解决方案 > 如何检查鼠标是否在处理 3 中的画布上?

问题描述

我想编写一个函数,true如果鼠标在画布上则返回,否则返回false

我的解决方案基本上是这样的:

import java.awt.MouseInfo;

Point globalMouse;

boolean mouseOverCanvass() {
    globalMouse = MouseInfo.getPointerInfo().getLocation(); 

    boolean mouseInXRange = (canvass.X < globalMouse.X) && (globalMouse.X < canvass.X + width);
    boolean mouseInYRange = (canvass.Y < globalMouse.Y) && (globalMouse.Y < canvass.Y + height);

    if (mouseInXRange && mouseInYRange) {
        return true;
    } else {
        return false;
    }
}

问题是我找不到画布位置。我找到了获取窗口位置的解决方案,但这提供了包括顶部栏的坐标,而我想要该窗口中画布的位置。

标签: javaprocessing

解决方案


覆盖 PApplet 提供的mouseEntered()mouseExited()方法,使用布尔变量来跟踪当前鼠标悬停在画布上的状态:

boolean mouse_over = false;

@Override
public void mouseEntered() {
    mouse_over = true;
}

@Override
public void mouseExited() {
    mouse_over = false;
}

推荐阅读