#java #swing #event-handling #mouseevent #awtrobot
#java #swing #обработка событий #mouseevent #awtrobot
Вопрос:
Мне нужно вызвать 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()
? Есть ли какой-либо другой способ вызвать событие для определенного компонента?
Комментарии:
1. почему голосование отрицательное?? интересно??
Ответ №1:
Вместо этого вы должны использовать Component.getLocationOnScreen() . Этот метод возвращает абсолютные координаты.
Комментарии:
1. Я задавался тем же вопросом.
gLOS
является ли правильным использовать для получения «местоположения на экране». @mKorbel если вы заметили, зачем редактировать?2. хммм, я прохожу через JLabel OP, тогда зачем использовать JLabel для компонента, но согласен 🙂
Ответ №2:
Я бы рекомендовал использовать FEST-Swing, который позволяет вам писать код, который выглядит следующим образом dialog.button("ok").click();
Обычно он используется для тестирования компонентов Swing, но на самом деле вы можете использовать его и в другое время. Возможно, вам будет полезно задать имя компонента, чтобы вы могли легко находить их с помощью fest.