Проверьте, если это персонаж

После получения действия от KeyListener, используя event.getKeyCode(), а затем KeyEvent.getKeyText(keyCode), как я могу проверить, является ли результат.getKeyText (keyCode) одним символом, например "a", а не целое слово как "Космос"?

4 ответа

Решение

Как насчет этого:

KeyEvent.getKeyText(keyCode).length == 1

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

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.
  }
}

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

Например, что-то вроде этого:

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

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

event.getKeyChar() != '\uFFFF'

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

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

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

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

Другие вопросы по тегам