Java - 鼠标窗外

时间:2013-08-11 09:00:17

标签: java swing jframe awt mouselistener

我如何知道鼠标是否在我制作的窗口之外以及它从哪一侧退出。我正在制作一个经典的乒乓球游戏,当我将鼠标移出太快时,“东西”会保留一些像素。我希望它移动到退出的窗口边缘。

private class MouseMotion extends MouseAdapter{
    public void mouseMoved(MouseEvent e) {
        super.mouseMoved(e);
        int x = e.getX();
        p1.move(x);
    }
}

和移动功能

public void move(int x) {
    if (x < 0  ) {
        this.x = 0;
    }else if(x+width > Main.screenSize.width - 1){
        this.x = Main.screenSize.width - width - 1;
    } else {
        this.x = x;
    }
}

我只需要知道一种方法来了解鼠标是否在窗外。

4 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

你可能想看看这个:

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

这告诉你指针在屏幕上。无论您的应用程序是否有焦点。无论指针是否位于窗口顶部。

答案 2 :(得分:0)

您可以使用MouseExited(),然后使用event.getPoint()从生成的事件中获取坐标。

答案 3 :(得分:0)

尝试将它放在可以运行的地方并摆脱MouseMotion类。 'c'是p1被绘制的JComponent,我不知道你在代码中调用了什么对象。 'running'是一些设置为true的布尔值。运行此代码时,p1将根据鼠标移动,直到“running”设置为false。

new Thread(()->{
    while(running) {
        p1.move(MouseInfo.getPointerInfo().getLocation().getX()-c.getLocationOnScreen());
    }
}).start();