模拟MouseEvent

时间:2014-05-26 06:59:50

标签: java swing mouselistener

我想模拟鼠标点击图形。我添加了一个Mouselistener,并在完成鼠标点击时执行了一些动作,但我真的需要模拟用户在我的程序中点击了我的图形...我怎么能说出像“”MouseEvent e执行的那样!“”?< / p>

实际上,当您单击名为“Clean”的Jbutton时,我想清理“Graphics 2D canvas”。但问题是只有当用户点击我的“图形2D画布”时才会执行清理操作。我想通过点击JButton来清除“图形2D画布”的错觉。

感谢。

     addMouseListener(this);
     addMouseMotionListener(this);

public void mousePressed(MouseEvent e) {
            e.consume();
            x1=e.getX();
            y1=e.getY();
            if(figure==1 || figure==3 )   {x2=x1; y2=y1;}
            ;   }

PS:我不能使用机器人,因为我必须在每个操作系统上运行我的程序,有人告诉我我不能在每个程序上运行它:

Robot robot = null;
try {
    robot = new Robot();
} catch (AWTException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

 // SET THE MOUSE X Y POSITION
 robot.mouseMove(65*Fond_noir.pourcent_largeur, 16*Fond_noir.pourcent_hauteur);
 robot.mousePress(InputEvent.BUTTON1_MASK);
 robot.mouseRelease(InputEvent.BUTTON1_MASK);

}

1 个答案:

答案 0 :(得分:2)

嗯,你对机器人是正确的。它依赖于平台,并且无法保证它将支持所有平台上的所有功能,来自JavaDoc:

  

请注意,某些平台需要特殊权限或扩展名   访问低级输入控件。如果是当前的平台配置   不允许输入控制,当抛出AWTException时   试图构建机器人对象。例如,X-Window系统会   如果不是XTEST 2.2标准扩展,则抛出异常   X服务器支持(或未启用)。

要模拟点击,您只需执行以下操作:

JButton buttonToSimulateClicking = new JButton(...);
buttonToSimulateClicking.doClick(); // As simple as that !

如果你必须模拟“艰难的方式”点击,即模拟鼠标点击,你可以随时执行以下操作:

MouseEvent clickEvent = new MouseEvent(buttonToSimulateClicking, MouseEvent.MOUSE_CLICKED, ...);

EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
eventQueue.dispatchEvent(clickEvent);