2017-02-16 6 views
0

Я пытаюсь создать экранную клавиатуру в javafx. Единственная проблема, с которой я сталкиваюсь, заключается в том, что, когда вы выбираете сцену javafx или нажимаете кнопку в окне, фокус затем перенаправляется на сцену javafx, а нажатие кнопки фактически не набирает букву в браузере, текстовом документе и т. Д.Предотвращение сцены JavaFx от фокусировки - Экранная клавиатура

Вот мой код для нажатия кнопки. Я использую класс робота.

private void handleButtonAction(ActionEvent event) throws AWTException { 

    Robot a = new Robot(); 
    a.keyPress(KeyEvent.VK_Y);//testing keypress of "Y". 

} 

Я видел в Swing, как вы можете установить свойство фокуса ложь, но я установить на использовании JavaFX. Я видел немало людей, которые пытаются ответить на этот же вопрос, но никто не имеет правильного ответа.

ответ

0

Я боюсь, что в настоящее время нет способа добиться этого исключительно с помощью JavaFx.

Это an example, как вы могли бы это сделать, обернув ваше приложение JavaFx в Swing-App. Архитектурное чудовище;).

В качестве альтернативы, я мог бы предположить, что использование такого встроенного слоя, как JNI/JNA, возможно в этом сценарии.

Однако в этом случае я бы поставил под вопрос, является ли Java технически правильным инструментом для работы. Можно утверждать, что OSK по определению тесно связан с ОС и, как таковые, более нативные инструментальные средства в порядке. Это, конечно, зависит от объема вашего проекта. Как побочный проект это может быть хорошо, но как продукт нет.