JavaFX KeyEvent возвращает KeyCode.UNDEFINED

Я создал простое приложение JavaFX, которое получает ввод от пользователя в TextField. Я прикрепил событие KeyTyped от SceneBuilder к контроллеру. Моя функция выглядит так:

@FXML private void keyTyped(KeyEvent event) {
    System.out.println(event.getCode().equals(KeyCode.ENTER));
}

Эта функция всегда выводит UNDEFINED, когда я нажимаю клавишу ввода. Любые идеи о том, как это исправить? Другие письма, которые я печатаю, похоже, имеют ту же проблему.


person j will    schedule 21.12.2013    source источник


Ответы (1)


KeyTyped — особое событие. У него нет KeyCode, вместо него установлено character.

См. пример для буквы «а»:

KeyEvent [source = TextField[id=null, styleClass=text-input text-field], 
target = TextField[id=null, styleClass=text-input text-field], eventType = KEY_TYPED, consumed = false, 
character = a, text = , code = UNDEFINED]

и javadoc: http://docs.oracle.com/javafx/2/api/javafx/scene/input/KeyEvent.html#getCode()

Код клавиши, связанный с клавишей в этом событии нажатия или отпускания клавиши. Для событий, типизированных ключом, всегда используется код KeyCode.UNDEFINED.

person Sergey Grinev    schedule 21.12.2013