我如何知道鼠标是否在我制作的窗口之外以及它从哪一侧退出。我正在制作一个经典的乒乓球游戏,当我将鼠标移出太快时,“东西”会保留一些像素。我希望它移动到退出的窗口边缘。
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;
}
}
我只需要知道一种方法来了解鼠标是否在窗外。
答案 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();