我想编写一个函数,如果鼠标在画布上,则返回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;
}
}
问题是我找不到画布的位置。我发现this solution可以获取窗口的位置,但这提供了包括顶部栏的坐标,而我希望画布在该窗口内的位置。
答案 0 :(得分:3)
使用布尔变量跟踪当前鼠标悬停在画布上的状态,覆盖PApplet提供的 mouseEntered()和 mouseExited()方法:>
boolean mouse_over = false;
@Override
public void mouseEntered() {
mouse_over = true;
}
@Override
public void mouseExited() {
mouse_over = false;
}