如何使用Robot类触发组件上的单击事件?



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

我尝试使用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() ?是否有其他方法可以触发特定组件上的事件?

你应该使用Component.getLocationOnScreen()。这个方法返回绝对坐标。

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

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

相关内容

  • 没有找到相关文章

最新更新