Java Swing: можно ли отправлять ввод с клавиатуры робота в определенные окна JFrame?

Я использую стороннюю библиотеку Java, которая создает новые окна JFrame. Как заставить java.awt.Robot отправлять клики и ввод с клавиатуры в это конкретное окно, когда оно появляется? Я бы запустил его в отдельном потоке, чтобы другие действия могли выполняться в основном приложении, пока робот отправляет входные данные в определенное окно JFrame.

Обратите внимание: у меня нет доступа API к процессу, который порождает это окно JFrame.

В настоящее время, когда это окно JFrame свернуто или закрыто, робот будет продолжать отправлять входные данные в любое видимое текущее окно JFrame.


person KJW    schedule 13.12.2011    source источник
comment
как получить созданный кадр?   -  person kleopatra    schedule 14.12.2011
comment
не уверен что ты имеешь ввиду? он запускается событием, создаваемым самой библиотекой во время выполнения. нет API для доступа к этому событию.   -  person KJW    schedule 15.12.2011


Ответы (1)


Вы получаете все фреймы, запущенные вашим приложением:

Frame[] frames = JFrame.getFrames();
//find the frame your looking for and call click(frame)

Щелкните в центре компонента

click(Component c){

//get center 
Dimension size = c.getSize();
Point center = new Point(size.width/2, size.height/2);

//you might want to check if the component is showing.

Robot.mouseMove(center.getX(), center.getY());
Robot.keyPress(KeyEvent.VK_A);

}
person Dimitry    schedule 23.12.2011