如何使用Robot类在Component上触发click事件?

时间:2011-11-01 09:56:16

标签: java swing event-handling mouseevent awtrobot

我需要在JLabel(或任何其他组件)上触发MouseEvent mouseClicked。我该怎么做?

我使用Robot类尝试了如下:

try {
    Robot r=new Robot();
    r.mouseMove(jl.gettX(), jl.getY());//jl is the JLabel
    r.mousePress(InputEvent.BUTTON1_MASK);
    r.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (AWTException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

getX()getY()正在返回组件父级的x,y位置。如何获取组件的绝对位置以便我可以触发Robot.mousePress()?是否有其他方法可以触发特定组件上的事件?

2 个答案:

答案 0 :(得分:3)

您应该使用Component.getLocationOnScreen()代替。此方法返回绝对坐标。

答案 1 :(得分:1)

我建议使用FEST-Swing,它允许您编写类似dialog.button("ok").click();的代码

它通常用于测试Swing组件,但实际上您也可以在其他时间使用它。您可能会发现设置组件名称很有用,这样您就可以轻松找到它们。