我只使用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,那么你可以将监听器注册到Frame,在这种情况下你只需要使用MouseAdapter,它允许你只实现0个或多个动作方法(即只是mouseClicked)
frame.addMouseListener(new MouseAdapter() {
void mouseClicked(MouseEvent e) {
Point p = e.getPoint();
int x = (int) p.getX();
int y = (int) p.getY();
// do somthing withe the x and y points
}
});
编辑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 会在鼠标被拖动时触发一个事件