2

我需要在 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()andgetY()正在返回x,y组件父级的位置。如何获取组件的绝对位置以便触发Robot.mousePress()?有没有其他方法可以触发特定组件上的事件?

4

2 回答 2

3

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

于 2011-11-01T10:03:33.850 回答
1

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

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

于 2011-11-01T10:03:36.283 回答