Java 如何在JLabel中获取图像的X,Y坐标

Java 如何在JLabel中获取图像的X,Y坐标,java,swing,coordinates,mouselistener,mouse-listeners,Java,Swing,Coordinates,Mouselistener,Mouse Listeners,我有一张地图的图像,作为JLabel的图标。 我使用下面的代码来获取鼠标单击位置的X,Y坐标。 我已将此代码放入JLabel的MouseClick事件中 Point point = MouseInfo.getPointerInfo().getLocation(); double X = point.getX(); double Y = point.getY(); 但是坐标取决于JFrame表单的位置。如果移动表格,坐标将发生变化 我是否可以冻结JFrame? 或 我是否可以得到图像的一个角点

我有一张地图的图像,作为
JLabel
的图标。 我使用下面的代码来获取鼠标单击位置的X,Y坐标。 我已将此代码放入
JLabel
的MouseClick事件中

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

double X = point.getX();
double Y = point.getY();
但是坐标取决于
JFrame
表单的位置。如果移动表格,坐标将发生变化

我是否可以冻结
JFrame
? 或 我是否可以得到图像的一个角点为0,0,并得到与之相关的其他坐标?(因此我可以计算实际坐标)

返回鼠标相对于屏幕的坐标。使用
MouseEvent
中的坐标

label.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
         double x = e.getX();
         double y = e.getY();
         ...
    }
});
返回鼠标相对于屏幕的坐标。使用
MouseEvent
中的坐标

label.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
         double x = e.getX();
         double y = e.getY();
         ...
    }
});

我试过了,成功了!非常感谢。但有一个小问题。当我点击图像时,public void mouseClicked(MouseEvent e){}会被多次调用。确切地说是我点击图像的次数。如果我第三次点击它,“public void mouseClicked(MouseEvent e){}”中的代码会被调用3次,并且它会随着我点击次数的增加而增加。你能解释一下为什么会这样吗?:)1) 既然这个问题已经回答了,请回答是否有助于解决问题。2) 对于下一个问题,请单独提出一个问题并添加一个。@Reimius:您能检查一下这个问题吗?我注意到您在最近的问题中发布了一个不可编译的代码片段。没有SSCCE?@AndrewThompson:你说的不可编译是什么意思?我发布了我在按钮点击事件中使用的全部代码。还有什么比这更重要的呢?你能澄清一下吗?我试过了,成功了!非常感谢。但有一个小问题。当我点击图像时,public void mouseClicked(MouseEvent e){}会被多次调用。确切地说是我点击图像的次数。如果我第三次点击它,“public void mouseClicked(MouseEvent e){}”中的代码会被调用3次,并且它会随着我点击次数的增加而增加。你能解释一下为什么会这样吗?:)1) 既然这个问题已经回答了,请回答是否有助于解决问题。2) 对于下一个问题,请单独提出一个问题并添加一个。@Reimius:您能检查一下这个问题吗?我注意到您在最近的问题中发布了一个不可编译的代码片段。没有SSCCE?@AndrewThompson:你说的不可编译是什么意思?我发布了我在按钮点击事件中使用的全部代码。还有什么比这更重要的呢?你能澄清一下吗?