Как я могу вызвать событие щелчка на Компоненте, используя класс Robot? - PullRequest
2 голосов
/ 01 ноября 2011

Мне нужно вызвать MouseEvent mouseClicked на JLabel (или любой другой компонент в этом отношении). Как мне это сделать?

Я попробовал использовать класс 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()? Есть ли другой способ вызвать событие для определенного компонента?

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Вместо этого следует использовать Component.getLocationOnScreen () . Этот метод возвращает абсолютные координаты.

1 голос
/ 01 ноября 2011

Я бы порекомендовал использовать FEST-Swing , который позволяет писать код, подобный этому dialog.button("ok").click();

Обычно он используется для тестирования Swing компонентов,но на самом деле вы можете использовать его и в другое время.Может оказаться полезным установить имя компонента, чтобы вы могли легко найти его с помощью fest.

...