以编程方式单击Java Swing中的GUI按钮

Gig*_*ron 54 java swing awtrobot

我将如何以编程方式单击一个Swing JButton,以便注册所有相关的动作/鼠标事件并对用户可见(即他们看到按钮被按下就像他们实际点击它一样)?

该按钮与我正在运行的应用程序相同; 我不是想控制另一个应用程序中的按钮.我想我可以直接将事件注入队列,但是如果可能的话我宁愿避免使用这种方法,这样做也不会显示可见的点击.

我看到java.awt.Robot类提供了移动鼠标并单击鼠标的方法,但没有让它单击特定按钮.

Jas*_*Cav 99

你尝试过使用doClick()吗?

  • 也许`click()`或`press()`可能是更好的名字 (8认同)
  • @Gigatron - 是的 抽象有时会让你很难知道什么是可用的(特别是如果没有好的文档 - 感谢JavaDocs的好处).很高兴我能帮助你! (4认同)

Mar*_*aux 11

如果doClick()不是您想要的,您可以将鼠标移动到按钮并按下它:

public void click(AbstractButton button, int millis) throws AWTException
{
    Point p = button.getLocationOnScreen();
    Robot r = new Robot();
    r.mouseMove(p.x + button.getWidth() / 2, p.y + button.getHeight() / 2);
    r.mousePress(InputEvent.BUTTON1_MASK);
    try { Thread.sleep(millis); } catch (Exception e) {}
    r.mouseRelease(InputEvent.BUTTON1_MASK);
}
Run Code Online (Sandbox Code Playgroud)