Попытка получить код символа клавиши ВВОД - PullRequest
3 голосов
/ 21 ноября 2011

У меня есть этот код:

newSymbolTextBox.addKeyPressHandler(new KeyPressHandler() {
  public void onKeyPress(KeyPressEvent event) {
      System.out.println("foo =" + KeyCodes.KEY_ENTER);
  System.out.println("bar =" + event.getCharCode());
  }
});

Когда я нажимаю ENTER, я получаю этот вывод:

foo =13
bar =

Я ожидал значение после bar =. Есть идеи?

Ответы [ 4 ]

8 голосов
/ 21 ноября 2011

Вам нужно либо использовать event.getNativeEvent().getKeyCode(), либо переключиться на KeyDownHandler.

newSymbolTextBox.addKeyPressHandler(new KeyDownHandler() {
  public void onKeyDown(KeyDownEvent event) {
      System.out.println("foo =" + KeyCodes.KEY_ENTER);
      System.out.println("bar =" + event.getNativeKeyCode());
  }
});

См. http://code.google.com/p/google-web-toolkit/issues/detail?id=5558

8 голосов
/ 21 ноября 2011

Значение, собственно, и есть.Причина, по которой вы ничего не видите, заключается в том, что персонаж - это возврат каретки.Возврат каретки, я полагаю, просто перемещает следующую строку (вы можете гуглить, это точная функция).Если вы нажмете «таблица ascii», вы увидите, что 13, полученное из KeyCodes.KEY_ENTER, соответствует CR, символу возврата каретки.

0 голосов
/ 05 июня 2013

В Windows с Java 7 возвращает 10 для обоих случаев.

И для отображения числового значения символа вам нужно привести его к int.

System.out.println((int) e.getKeyChar());
0 голосов
/ 21 ноября 2011

KeyCodes.KEY_ENTER - целочисленное значение клавиши Enter. event.getCharCode() является символьным представлением, поэтому после bar =

будет отображаться в виде новой строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...