#java #javafx #keypress
#java #javafx #нажатие клавиши
Вопрос:
Я хочу, чтобы мое приложение JFX имитировало нажатия клавиш со стрелками (когда они зарегистрированы в текстовом поле), но я не могу понять, как отправлять что-либо, кроме строк или байтов.
Я представляю себе что-то вроде этого:
static EventHandler<KeyEvent> KEY() {
E = new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
if (ke.getCode().equals(KeyCode.UP)) {
try {
//someObject.SimulateKeyPress(KeyCode.UP);
//OR
//coolObject.SendKey((char)KEY_UPKEY));
} catch (Exception ex) {
//Teleport goats
}
}
}
};
return E;
}
Ответ №1:
Используйте класс Robot
try {
Robot r = new Robot();
//there are other methods such as positioning mouse and mouseclicks etc.
r.keyPress(java.awt.event.KeyEvent.VK_UP);
r.keyRelease(java.awt.event.KeyEvent.VK_UP);
} catch (AWTException e) {
//Teleport penguins
}
Комментарии:
1. Это имитирует нажатия клавиш во всех приложениях, ориентированных на текущий момент, не обязательно связанных с javafx или процессом jvm вообще.
Ответ №2:
Вы не можете создать экземпляр типа Robot . Вам лучше сделать :
Robot robot = com.sun.glass.ui.Application.GetApplication().createRobot();
Комментарии:
1. Также имейте в виду, что начиная с Java 9,
com.sun
API могут быть недоступны для прикладных программистов, использующих JDK.2. Я не знаю, откуда вы это взяли, но вы можете абсолютно точно создать экземпляр
Robot
: docs.oracle.com/javase/8/docs/api/java/awt/Robot.html#Robot —3. Лев имеет в виду другого робота Майкла. Возможно, робот awt является альтернативой стеклянному роботу в данном случае Lion (я недостаточно знаю о роботах, чтобы сказать наверняка).
4. Как «они» могут решить удалить доступ к FXRobot без предоставления альтернативы ?!?!?!? Я не понимаю этого ВОПИЮЩЕГО пренебрежения?