如何知道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