Как узнать, нажал ли пользователь клавишу «Backspace» внутри метода KeyTyped? Их значение из arg0.getKeyChar()
не равно KeyEvent.CHAR_UNDEFINED
, а arg0.getKeyCode()
равно KeyEvent.VK_UNDEFINED
, поскольку оно всегда будет внутри метода KeyTyped. Должен ли я использовать методы KeyReleased/KeyPressed и помечать логическое значение? Какой метод срабатывает первым? KeyReleased или KeyTyped?
Java KeyListener: нажата ли клавиша Backspace в KeyTyped
comment
keyPressed срабатывает при нажатии клавиши (вниз) keyReleased срабатывает при отпускании клавиши (вверх) keyTyped срабатывает сразу после того, как пользователь вводит символ Unicode в прослушиваемый компонент.
- person Flot2011   schedule 29.03.2013
comment
@Flot2011 Так KeyReleased перед KeyTyped? Или зависит?
- person Justin   schedule 29.03.2013
Ответы (1)
Похоже, KeyTyped не может обнаружить ключи, которые не имеют визуального представления. Я предполагаю, что это включает в себя backspace.
KeyListener, keyPressed и keyTyped
person
Jazzepi
schedule
28.03.2013
Что это дает в getKeyChar() тогда?
- person Justin; 29.03.2013
Только что нашел. Когда я привожу arg0.getKeyChar() к типу int, я получаю число 8. Будет ли то же самое на других компьютерах? (для клавиши Enter я получаю 10, для ESC я получаю 27. Эти значения стандартизированы?)
- person Justin; 29.03.2013
Я считаю, что backspace имеет правильную кодировку юникода, поэтому getKeyChar() сообщит, что
- person Jazzepi; 29.03.2013
Таким образом, backspace имеет символ Юникода, о чем сообщает getKeyChar(), но он не печатается, поэтому getKeyCode() дает вам неопределенное значение.
- person Jazzepi; 29.03.2013
Да, но если вы приведете getKeyChar() к типу int, он всегда будет давать число 8. Спасибо.
- person Justin; 29.03.2013
Да, он всегда должен давать вам число 8, потому что это кодировка юникода :) Нет проблем! Было весело исследовать.
- person Jazzepi; 29.03.2013