oss*_*uko 1 java swing point jframe mouseevent
我正在尝试开发一个非常基本的游戏,它涉及鼠标.所以我想要做的是获取鼠标的坐标来写一个整数.我搜索了互联网并找到了这个.
mouse_x=MouseInfo.getPointerInfo().getLocation().getX();
mouse_y=MouseInfo.getPointerInfo().getLocation().getY();
Run Code Online (Sandbox Code Playgroud)
它部分工作,并在桌面上给我鼠标坐标.但我需要的是鼠标在框架上的坐标.所以,如果我只知道帧的起始点(0,0)(不是窗口的那个,没有工具栏的白色区域)的坐标.我可以计算鼠标的坐标.
提前致谢.
或者,如果那不可能,我可以使用如何在全屏幕中开发它.
我总是需要知道鼠标的位置.当我在一个永无止境的while循环中运行它时,它应该刷新位置.
我只是用e.getPoint()它返回点击鼠标的点.你可以拥有你的Frame工具MouseListener,MouseListener如果它不是主GUI组件,你可以注册到框架.
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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您执行上述操作,则还需要覆盖其他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) {
}
Run Code Online (Sandbox Code Playgroud)
如果你的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
}
});
Run Code Online (Sandbox Code Playgroud)
编辑为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){
}
}
Run Code Online (Sandbox Code Playgroud)
该mouseMoved会在每次移动鼠标时触发事件,并且mouseDragged只要拖动鼠标会触发一个事件
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |