KeyListener, keyPressed или keyTyped

У меня есть JFrame (ну, class, который расширяет JFrame), и я хочу сделать действие, когда я нажимаю клавишу F5. Итак, я сделал class реализующим KeyListener. И с этим пришли три метода: keyPressed, keyReleased и keyTyped.

Какой из этих методов следует использовать для прослушивания F5? keyPressed или keyTyped? В настоящее время у меня есть следующее, однако он ничего не печатает, когда я нажимаю F5.

public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_F5) System.out.println("F5 pressed"); } public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub } 

 keyPressed - when the key goes down keyReleased - when the key comes up keyTyped - when the unicode character represented by this key is sent by the keyboard to system input. 

Я лично использовал бы keyReleased для этого. Он срабатывает только тогда, когда они поднимают палец вверх.

Обратите внимание, что keyTyped будет работать только на то, что может быть напечатано (я не знаю, может ли F5 или нет), и я считаю, что он будет срабатывать снова и снова, если ключ удерживается нажатой. Это было бы полезно для чего-то вроде … перемещения персонажа по экрану или что-то в этом роде.

Ни. Вы не должны использовать KeyLIstener.

Swing был разработан для использования с Key Bindings. Прочтите раздел из руководства Swing о том, как использовать привязки клавиш .

Вы должны использовать keyPressed если хотите немедленный эффект, и keyReleased если вы хотите получить эффект после отпускания ключа. Вы не можете использовать keyTyped потому что F5 не является символом. keyTyped активируется только при нажатии символа.

 private String message; private ScreenManager s; //Here is an example of code to add the keyListener() as suggested; modify public void init(){ Window w = s.getFullScreenWindow(); w.addKeyListener(this); public void keyPressed(KeyEvent e){ int keyCode = e.getKeyCode(); if(keyCode == KeyEvent.VK_F5) message = "Pressed: " + KeyEvent.getKeyText(keyCode); } 
  • Попытка создания JTable с правильным заголовком строки
  • изменение размера ImageIcon в JButton
  • Java - Как подключиться к меню «Копировать и вставить» в Mac OS
  • Java - проверьте, не является ли JTextField пустым или нет.
  • Cytoscape как инструменты в java для построения графика
  • Как правильно выровнять этот текст?
  • Как закрыть приложение Java Swing из кода
  • Заполнить JFreechart TimeSeriesCollection из Mysql DB?
  • Добавьте JLabel с изображением в JList, чтобы показать все изображения
  • NullPointerException в invokeLater при запуске через Java Webstart
  • Как сделать JButton в JTable-ячейке щелчком мыши?
  • Interesting Posts

    NSDateFormatter возвращает неверную дату + Swift

    Передача аргументов командной строки в Visual Studio 2010?

    TimePickerDialog и AM или PM

    IPN не был отправлен, а рукопожатие не было проверено. Проверьте информацию.

    Как получить разницу во времени в iPhone

    Как имитировать не виртуальные методы?

    Как получить квадратный корень для 32-битного ввода только за один такт?

    Json.Net добавляет $ id к объектам EF, несмотря на то, что PreserveReferencesHandling указывает на “None”

    Как просмотреть результаты моих заданий cron?

    Потоки последовательного и параллельного выполнения streamов Java8 дают разные результаты?

    Воспроизведение аудио через сеть с помощью Windows 7?

    Могу ли я объединить два маршрутизатора вместе с DHCP на обоих?

    Прокрутите все файлы с определенным расширением

    Могут ли новые версии JRE запускать Java-программы, скомпилированные со старыми версиями JDK?

    Могу ли я сделать синхронный запрос с волейболом?

    Давайте будем гением компьютера.