KeyListeners和KeyBinders有什么区别?

时间:2013-02-19 22:30:37

标签: java swing keyboard keylistener

标题几乎总结了它。我刚开始使用带有程序的键盘,想知道是什么让它们与众不同,哪一个更容易使用等等。

1 个答案:

答案 0 :(得分:3)

KeyListener是AWT和Swing使用的原始机制,允许组件注册对关键事件的兴趣。它是一个低级API,提供有关键事件的大量信息(如修饰符)。

由于多种原因,在大多数情况下不鼓励这种监控关键事件的方法。第一个事实是,为了使组件接收键事件(通过此API),它必须是可聚焦的并且具有当前的键盘焦点。这是一个陷阱,99%的关于KeyListeners的问题与。

有关

第二个与代码的外观有关,传统上,使用KeyListener会要求你有一个大的if-else语句,考虑到各种键击及其潜在的修饰符,这可能会变得很麻烦随着时间的推移 - 同样的批评也可以归结为ActionListener

Key Bindings是一个较新的API(并且是更大的输入绑定API的一部分),可用于监视非常特定的键事件。这包括单个键击和修饰符。

Key Bindings也使用Actions API,这意味着您可以在程序的许多不同部分重用Action,而无需每次都重新实现逻辑。

来自How to use Key Bindings

  

键绑定的替代方法是使用键侦听器。关键听众   有它们作为键盘输入的低级接口的位置,但是   响应个别键键绑定更合适   往往会导致代码更容易维护。关键听众也是   如果在组件时键绑定是活动的则很难   没有焦点。键绑定的一些优点是它们   有点自我记录,将收容层次结构纳入   帐户,鼓励可重复使用的代码块(Action对象),并允许   要轻松删除,自定义或共享的操作。而且,他们做   可以轻松更改操作绑定的键。另一个   Actions的优点是它们具有提供的启用状态   一种简单的方法来禁用该操作,而无需跟踪哪个   它附属的组件。

相关问题