Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaFX KeyEvent returns KeyCode.UNDEFINED

I created a simple JavaFX application that receives input from the user in a TextField. I attached the KeyTyped event from SceneBuilder to the controller. My function looks like this:

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

This function always prints out UNDEFINED when I type the enter key. Any ideas on how to fix this? Other letters I type seem to have the same problem as well.

like image 557
j will Avatar asked Dec 21 '13 20:12

j will


1 Answers

KeyTyped is a special event. It doesn't have KeyCode but has character set instead.

See example for letter 'a':

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]

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

The key code associated with the key in this key pressed or key released event. For key typed events, code is always KeyCode.UNDEFINED.

like image 68
Sergey Grinev Avatar answered Nov 17 '22 03:11

Sergey Grinev