Сравнение функциональности между KeyListeners и Key Bindings - PullRequest
7 голосов
/ 29 декабря 2011

Этот вопрос возник, когда анонимный пользователь отклонил мой ответ, включающий KeyListeners, и предложил вместо этого использовать привязки клавиш.Этот анонимный пользователь сообщил мне, что интерфейс KeyListener был старым решением AWT и не должен использоваться.

Однако я не знаю, стоит ли мне полностью доверять этой информации.Я исследовал оба веб-сайта, включая оракула, и не нашел ничего относительно функциональности KeyListeners или Key Bindings.Я осознаю тот факт, что оба они выполняют схожие задачи, но я не уверен, что именно происходит "за кадром", так сказать.

Я склоняюсь к использованию привязок клавиш в будущих проектахпросто потому, что я получил исследование, предполагающее, что интерфейс KeyListener требует, чтобы рассматриваемый компонент имел фокус, а привязки клавиш - нет.Но я в замешательстве.Почему это так?Как привязки клавиш запускаются иначе, чем KeyListeners?

PS Я уверен, что это редкость, но есть ли обстоятельства, когда использование KeyListeners более уместно?

Ответы [ 2 ]

10 голосов
/ 29 декабря 2011

Как использовать привязки клавиш объясняет основы.

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

KeyListener - это последнее средство, когда все другие абстракции не будут работать. Возможно, вы бы использовали KeyListener, когда вы слушаете ЛЮБОЙ KeyStroke. Поэтому было бы непрактично создавать 26 привязок для всех букв алфавита.

Но, опять же, во многих случаях лучше использовать API. Например, вместо прослушивания KeyEvents в текстовом поле вы будете использовать DocumentListener для прослушивания изменений в документе.

0 голосов
/ 13 января 2016

Я бы предложил вам использовать сочетания клавиш по многим причинам:

  • На самом деле он работает быстрее, чем KeyListener.
  • KeyBinding более развита и может предложить гораздо больше возможностей.
  • Хотя вам потребуется использовать таймер Swing, он лучше подходит для игр.
  • Доступно для установки и совместного использования.

Может быть трудно использовать его отдельно от KeyListener, но KeyListener не сможет обрабатывать несколько нажатий клавиш в игре.

...