我需要在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()
?是否有其他方法可以触发特定组件上的事件?
答案 0 :(得分:3)
您应该使用Component.getLocationOnScreen()代替。此方法返回绝对坐标。
答案 1 :(得分:1)
我建议使用FEST-Swing,它允许您编写类似dialog.button("ok").click();
的代码
它通常用于测试Swing组件,但实际上您也可以在其他时间使用它。您可能会发现设置组件名称很有用,这样您就可以轻松找到它们。