18c0693f

События от клавиатуры


Методы обработчики событий от клавиатуры объявляются в интерфейсе KeyListener, для которого существует класс адаптер KeyAdapter.

Событие от клавиатуры происходит для компонента, имеющего фокус. События от клавиатуры являются низкоуровневыми событиями.

Интерфейс KeyListener объявляет следующие методы обработчики для события KeyEvent:

o void keyTyped(KeyEvent e); // Ввод символа o void keyPressed(KeyEvent e); // Нажатие клавиши o void keyReleased(KeyEvent e) // Отпускание клавиши

Для получения информации о коде нажатой клавиши следует использовать методы класса KeyEvent.

Класс KeyEvent определен в иерархии классов Java следующим образом:


При нажатии или отпускании клавиши метод getKeyCode возвращает значение кода нажатой клавиши.

Метод getKeyChar возвращает значение символа Unicode или CHAR_UNDEFINED.

При обработки события ввода (метод void keyTyped(KeyEvent e) ) можно получить значение введенного с клавиатуры символа в формате Unicode или CHAR_UNDEFINED.

Клавиатурные комбинации обрабатываются в методах:

Например, нажатие клавиш Shift+B можно отследить в методе keyPressed (событие KEY_PRESSED): при первом вызове метода будет возвращен код клавиши Shift - VK_SHIFT, а при втором вызове метода - код клавиши A - VK_B. И только затем произойдет вызов метода keyTyped.

На следующей схеме приведен алгоритм обработки событий от клавиатуры.

Нажатая клавишаВызываемые методы обработки событияМетоды класса KeyEvent,используемые для получения информацииВозвращаемое методом значение
Shift+AkeyPressedgetKeyChar()

getKeyCode()

getModifiers()

символ = ' '

код = 16 (Shift)

модификатор = 1

keyPressedgetKeyChar()

getKeyCode()

getModifiers()

символ ='B'

код = 66(B)

модификатор = 1

keyTypedgetKeyChar()

getKeyCode()

getModifiers()

символ ='B'

код = 0

модификатор = 0

keyReleasedgetKeyChar()

getKeyCode()

getModifiers()

символ ='A'

код = 66(B)

модификатор = 0

keyReleasedgetKeyChar()

getKeyCode()

getModifiers()

символ = ' '

код = 16 (Shift)

модификатор = 0

<
В классе KeyEvent определены виртуальные коды для всех клавиш клавиатуры. К таким кодам относятся:

Класс KeyEvent содержит следующий набор методов, предназначенных для определения кодов нажатых клавиш:

Наряду с описанными методами, можно использовать методы, наследуемые от класса java.awt.event.InputEvent, включая следующие:




Все публикации раздела