如题...用了mouseMove方法之后就不能自由移动鼠标了...鼠标总会移动到程序中写的那个坐标...能不能只产生事件呢..

解决方案 »

  1.   

    可以用dispatchEvent(event);
    比如模拟鼠标移动的事件:
    JFrame jf = new JFrame("TEST");
    jf.setSize(500, 500);
    jf.addMouseMotionListener(new MouseMotionListener() {

    @Override
    public void mouseMoved(MouseEvent e) {
    System.out.println(e);

    }

    @Override
    public void mouseDragged(MouseEvent e) {

    }
    });
    jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    jf.setVisible(true);
    MouseEvent event = new MouseEvent(jf, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 120, 120, 120, 120, 120, 1, false, 0);
    jf.dispatchEvent(event);你可以发现上来就会打印
    ava.awt.event.MouseEvent[MOUSE_MOVED,(120,120),absolute(120,120),button=0,modifiers=Alt+Alt Graph+Button1+Button2,extModifiers=Shift,clickCount=1] on frame0
    具体MouseEvent参数,你要查看一下api,我这边随便写的。特别是查一下如何计算相对坐标和绝对坐标。