如何存储鼠标位置?

时间:2018-08-19 18:06:25

标签: java mouseevent

我正在尝试编写一个if语句,该语句在鼠标静止不动时会塞满东西。我正在尝试通过

Point storedPosition = MouseInfo.getPointerInfo().getLocation();

if (storedPosition == currentMousePosition){
 // do things when mouse is still
} else {
 // do things when mouse is moving
}

我可以使用哪个点来获取currentMousePosition

3 个答案:

答案 0 :(得分:4)

如果我能够正确处理,则您正在尝试检查鼠标位置是否与上次检查相同。

private static void checkMouseLocation() {
    PointerInfo info = MouseInfo.getPointerInfo();
    // This can sometimes be null, so check for it (e.g. when Windows' UAC
    // screen is active)
    if (info == null) {
        return;
    }
    Point currentLocation = info.getLocation();

    if (lastLocation != null && !lastLocation.equals(currentLocation)) {
        lastMoved = System.currentTimeMillis();
        triggerActivity();
    }
    lastLocation = currentLocation;
}

答案 1 :(得分:0)

不要轮询类似的东西,而是因为您可能使用事件驱动的GUI库,所以请使用事件:

  • 如果它是Swing GUI,则启动一个与GUI兼容的计时器,例如Swing计时器
  • 使用某种类型的鼠标侦听器(如果为Swing,则为MouseMotionListener),并在侦听器中,停止计时器,如果它记录了鼠标的移动,请重新启动它。

答案 2 :(得分:0)

您可以侦听来自操作系统的鼠标移动事件。 JNativeHook library可以帮助您注册侦听器。 Here是此类侦听器的示例。 在此类侦听器的主体中,您可以触发鼠标移动/拖动时所需的任何代码