有没有办法在Java中将鼠标锁定在一个位置一段时间?
我试过这个:
while(timer == true){
Robot bot = new Robot();
bot.mouseMove(x, y);
}
但是当用户移动鼠标时,它会前后不快地跳跃(从用户拖动的位置到它应该被锁定的位置)。
如果有更好的方法可以做任何想法吗?或者我可以完全禁用鼠标的用户输入吗?提前谢谢!
答案 0 :(得分:3)
这是你可以去的(至少使用标准库)。鼠标“跳跃”取决于系统,特别是听众的“采样率”。我不知道影响它的JVM参数,但如果有这种精神的话,也不会感到惊讶。跳跃与鼠标加速度相反(鼠标可以在样本之间移动“长”距离)。
public class Stop extends JFrame {
static Robot robot = null;
static Rectangle bounds = new Rectangle(300, 300, 300, 300);
static int lastX = 450; static int lastY = 450;
Stop() {
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
addMouseMotionListener(new MouseStop());
getContentPane().add(new JLabel("<html>A sticky situation<br>Hold SHIFT to get out of it", JLabel.CENTER));
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(bounds);
setVisible(true);
}
private static class MouseStop extends MouseAdapter {
@Override
public void mouseMoved(MouseEvent e) {
if(e.isShiftDown()) {
lastX = e.getXOnScreen();
lastY = e.getYOnScreen();
}
else
robot.mouseMove(lastX, lastY);
}
}
public static void main(String args[]) {
new Stop();
}
}
编辑:我刚刚想到了一个涉及光标绘制的想法,就好像鼠标根本没有移动一样。如果我有所收获,我会添加代码。