【问题标题】:Java - Mouse out of windowJava - 鼠标移出窗口
【发布时间】:2013-08-12 18:45:01
【问题描述】:

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

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;
    }
}

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

【问题讨论】:

    标签: java swing jframe awt mouselistener


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      你可能想看看这个:

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

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

      【讨论】:

      • 然后你把这段代码放在 MouseListener.move() 块中,对吧?将其放在游戏循环中的其他位置。
      【解决方案3】:

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

      【讨论】:

      • MouseExited() 没有这样的方法(给定的 Java 方法名称区分大小写)。
      【解决方案4】:

      尝试将它放在可以运行的地方并摆脱 MouseMotion 类。 'c' 是 p1 被吸引到的 JComponent,我不知道您在代码中称该对象是什么。 'running' 是一些设置为 true 的布尔值。当这段代码运行时,p1会随着鼠标移动,直到'running'设置为false。

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

      【讨论】:

      • 这不是有点晚了吗?
      • @usama8800 Stack exchange 不仅仅是为了让人们可以回答他们自己的问题,它是为了让其他有相同问题的人可以找到已经回答的问题,并且只需要如果之前没有人问过这个问题,就问一个问题。我发布了一个答案,以便其他有类似问题的人可以在这里找到正确的答案,因为这里已经没有好的答案,我不得不在不同的网站上寻找答案。我在这里回答了,所以任何有这个问题的人如果来到这里就可以得到答案,而不必等待回复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 2016-01-04
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多