2013-08-12 4 views
0

После получения действия из KeyListener, используя event.getKeyCode() и позже в KeyEvent.getKeyText (keyCode), как бы проверить, является ли результат .getKeyText (keyCode) одиночным характер как «а», а не целое слово типа «Пространство»?Проверьте, есть ли его символ

ответ

0

Как об этом:

KeyEvent.getKeyText(keyCode).length == 1 
+0

Гений, но как насчет «пространства»? – HyperNeutrino

+0

Кроме того, обратная сторона, ~ _- + = [] {}; ': "\ |,./<>? И все клавиши numpad не регистрируют символ. В противном случае очень хороший метод. – HyperNeutrino

0

Вы можете использовать getKeyChar() KeyEvent, и тогда вы будете уверены, что то, что вы вернетесь, - это один символ.

E.g. что-то вроде этого:

public void keyTyped(KeyEvent e) { 
     keyChar = e.getKeyChar(); 
     ... 
    } 
0

Попробуйте это: -

if ((event.keyCode > 64 && event.keyCode < 91) || (event.keyCode > 96 && event.keyCode < 123) || event.keyCode == 8) 
{ 
    if(KeyEvent.getKeyText(keyCode).length == 1) 
    { 
    //Only one character is pressed. 
    } 
} 
0

Это решение работает для всего, кроме клавиши стирания и цифровой клавиатуры ключей ...

event.getKeyChar() != '\uFFFF' 

Поскольку любые выходы Java этот символ для нерушимых ключей, он работает довольно последовательно.

Чтобы устранить проблему удаления ключа ...

event.getKeyChar() != '\uFFFF' && event.getKeyCode() != KeyEvent.VK_DELETE 

Она возвращает true если ключ для печати, и false, если нет.

Смежные вопросы