如何知道java框架的坐标?

如何知道java框架的坐标?,java,swing,jframe,mouseevent,point,Java,Swing,Jframe,Mouseevent,Point,我正在尝试开发一个非常基本的游戏,它涉及鼠标。所以我想做的是得到鼠标的坐标来写一个整数。我在网上搜索了一下,找到了这个 mouse_x=MouseInfo.getPointerInfo().getLocation().getX(); mouse_y=MouseInfo.getPointerInfo().getLocation().getY(); 它部分工作,并给了我鼠标在桌面上的坐标。但我需要的是框架上鼠标的坐标。因此,如果我知道框架起始点(0,0)的坐标(不是窗口的坐标。没有工具栏的白色区域

我正在尝试开发一个非常基本的游戏,它涉及鼠标。所以我想做的是得到鼠标的坐标来写一个整数。我在网上搜索了一下,找到了这个

mouse_x=MouseInfo.getPointerInfo().getLocation().getX();
mouse_y=MouseInfo.getPointerInfo().getLocation().getY();
它部分工作,并给了我鼠标在桌面上的坐标。但我需要的是框架上鼠标的坐标。因此,如果我知道框架起始点(0,0)的坐标(不是窗口的坐标。没有工具栏的白色区域),我就可以计算鼠标坐标了。
提前感谢。
或者,如果这不可能,我可以使用如何在全屏上开发它。
我需要知道鼠标的位置。当我在一个永无止境的while循环中运行它时,它应该刷新位置。

您需要在JFrame中添加一个,然后使用
MouseEvent.getPoint

frame.addMouseListener(new MouseAdapter() {
    void mouseClicked(MouseEvent e) {
        System.out.println(e.getPoint());
    }
});
您需要在JFrame中添加一个,然后使用
MouseEvent.getPoint

frame.addMouseListener(new MouseAdapter() {
    void mouseClicked(MouseEvent e) {
        System.out.println(e.getPoint());
    }
});

我只使用
e.getPoint()
返回鼠标点击的点。您可以让您的框架实现
MouseListener
,如果它不是主要的GUI组件,您可以向框架注册
MouseListener

public class MyFrame extends JFrame implements MouseListener {

    @Override
    public void mouseClicked(MouseEvent e) {
        Point p = e.getPoint();
        int x = (int) p.getX();
        int y = (int) p.getY();

        // do something withe the x and y points
    }
}
如果执行上述操作,还需要覆盖其他
MouseListener
方法。尽管您不需要为他们执行任何操作

@Override
public void mouseExited(MouseEvent e) {
}

@Override
public void mouseEntered(MouseEvent e) {
}

@Override
public void mousePressed(MouseEvent e) {
}

@Override
public void mouseReleased(MouseEvent e) {
}
如果您的GUI类没有扩展
JFrame
,那么您可以将侦听器注册到该框架,在这种情况下,您只需要使用
MouseAdapter
,它允许您只实现0个或多个操作方法(即只需
mouseClicked


编辑
MouseMotionListener

“我想知道鼠标的位置,而不仅仅是单击鼠标时。”

如果在任何给定时间都不想知道鼠标的位置,则应实现
MouseMotionListener
并覆盖
mouseDragged
mouseMoved

public class MyFrame extends JFrame implements MouseMotionListener {

    ....

    public void mouseMoved(MouseEvent e){
        Point p = e.getPoint();
        int x = (int) p.getX();
        int y = (int) p.getY();

        // do something withe the x and y points
    }

    public void mouseDragged(MouseEvent e){

    }
}

每次移动鼠标时,
mouseMoved
将触发一个事件,
mouseDragged
将在拖动鼠标时触发一个事件

我只使用
e.getPoint()
返回鼠标单击的点。您可以让您的框架实现
MouseListener
,如果它不是主要的GUI组件,您可以向框架注册
MouseListener

public class MyFrame extends JFrame implements MouseListener {

    @Override
    public void mouseClicked(MouseEvent e) {
        Point p = e.getPoint();
        int x = (int) p.getX();
        int y = (int) p.getY();

        // do something withe the x and y points
    }
}
如果执行上述操作,还需要覆盖其他
MouseListener
方法。尽管您不需要为他们执行任何操作

@Override
public void mouseExited(MouseEvent e) {
}

@Override
public void mouseEntered(MouseEvent e) {
}

@Override
public void mousePressed(MouseEvent e) {
}

@Override
public void mouseReleased(MouseEvent e) {
}
如果您的GUI类没有扩展
JFrame
,那么您可以将侦听器注册到该框架,在这种情况下,您只需要使用
MouseAdapter
,它允许您只实现0个或多个操作方法(即只需
mouseClicked


编辑
MouseMotionListener

“我想知道鼠标的位置,而不仅仅是单击鼠标时。”

如果在任何给定时间都不想知道鼠标的位置,则应实现
MouseMotionListener
并覆盖
mouseDragged
mouseMoved

public class MyFrame extends JFrame implements MouseMotionListener {

    ....

    public void mouseMoved(MouseEvent e){
        Point p = e.getPoint();
        int x = (int) p.getX();
        int y = (int) p.getY();

        // do something withe the x and y points
    }

    public void mouseDragged(MouseEvent e){

    }
}

每次移动鼠标时,
mouseMoved
将触发一个事件,
mouseDragged
将在拖动鼠标时触发一个事件

如果出于某种模糊原因,在鼠标事件不可用的情况下需要坐标(在这种情况下,请查看其他答案),如果出于某种模糊的原因,在鼠标事件不可用的情况下需要坐标(在这种情况下,请查看其他答案),则可以使用将坐标从
MouseInfo
转换为
组件的坐标系,您可以使用将坐标从
MouseInfo
转换为
组件的坐标系

我不确定,但这正是我要找的。我想知道鼠标的位置,而不仅仅是在单击时。@OssoBuko通常最好使用事件,这样当鼠标位置实际发生变化时,位置才被读取。我写我的答案只是为了完整性,所以如果有人正在寻找一个解决方案,在这种情况下,这是不切实际的,另一种方法是在同一个问题页。我不确定,但这就是我要寻找的。我想知道鼠标的位置,而不仅仅是在单击时。@OssoBuko通常最好使用事件,这样当鼠标位置实际发生变化时,位置才被读取。我写我的答案只是为了完整,所以如果有人正在寻找一个解决方案,在这种情况下,这是不切实际的,另一种方法是在同一个问题页。谢谢,这就是我要寻找的。还有一件事,我的类实际上扩展了jpanel。所以当我实现鼠标侦听器时,它给了我一个错误。这没关系。这给了您一个错误,因为您需要实现这两种方法。使用
MouseMotionListener
时。
mouseDragged
mouseMoved
抱歉,这是一个打字错误。您需要实现
MouseMotionListener
,而不是
MouseListener
I修复了它。另外,两个
mouseMoved
s是一个打字错误。您需要同时使用
mouseMoved
mouseDragged
MouseMotionListener。谢谢你的身体。:)我很抱歉,我本来可以更清楚地知道我想要什么。谢谢你,这就是我想要的。还有一件事,我的类实际上扩展了jpanel。所以当我实现鼠标侦听器时,它给了我一个错误。这没关系。这给了您一个错误,因为您需要实现这两种方法。使用
MouseMotionListener
时。
mouseDragged
mouseMoved
抱歉,这是一个打字错误。您需要实现
MouseMotionListener
,而不是
MouseListener
I修复了它。另外,两个
mouseMoved
s是一个打字错误。您需要两个
mou