我需要在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轻松地找到它们。