Java KeyListener: нажата ли клавиша Backspace в KeyTyped

Как узнать, нажал ли пользователь клавишу «Backspace» внутри метода KeyTyped? Их значение из arg0.getKeyChar() не равно KeyEvent.CHAR_UNDEFINED, а arg0.getKeyCode() равно KeyEvent.VK_UNDEFINED, поскольку оно всегда будет внутри метода KeyTyped. Должен ли я использовать методы KeyReleased/KeyPressed и помечать логическое значение? Какой метод срабатывает первым? KeyReleased или KeyTyped?


person Justin    schedule 28.03.2013    source источник
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
comment
Что это дает в getKeyChar() тогда? - person Justin; 29.03.2013
comment
Только что нашел. Когда я привожу arg0.getKeyChar() к типу int, я получаю число 8. Будет ли то же самое на других компьютерах? (для клавиши Enter я получаю 10, для ESC я получаю 27. Эти значения стандартизированы?) - person Justin; 29.03.2013
comment
Я считаю, что backspace имеет правильную кодировку юникода, поэтому getKeyChar() сообщит, что - person Jazzepi; 29.03.2013
comment
Таким образом, backspace имеет символ Юникода, о чем сообщает getKeyChar(), но он не печатается, поэтому getKeyCode() дает вам неопределенное значение. - person Jazzepi; 29.03.2013
comment
Да, но если вы приведете getKeyChar() к типу int, он всегда будет давать число 8. Спасибо. - person Justin; 29.03.2013
comment
Да, он всегда должен давать вам число 8, потому что это кодировка юникода :) Нет проблем! Было весело исследовать. - person Jazzepi; 29.03.2013