标题几乎总结了它。我刚开始使用带有程序的键盘,想知道是什么让它们与众不同,哪一个更容易使用等等。
答案 0 :(得分:3)
KeyListener
是AWT和Swing使用的原始机制,允许组件注册对关键事件的兴趣。它是一个低级API,提供有关键事件的大量信息(如修饰符)。
由于多种原因,在大多数情况下不鼓励这种监控关键事件的方法。第一个事实是,为了使组件接收键事件(通过此API),它必须是可聚焦的并且具有当前的键盘焦点。这是一个陷阱,99%的关于KeyListeners
的问题与。
第二个与代码的外观有关,传统上,使用KeyListener
会要求你有一个大的if-else
语句,考虑到各种键击及其潜在的修饰符,这可能会变得很麻烦随着时间的推移 - 同样的批评也可以归结为ActionListener
。
Key Bindings是一个较新的API(并且是更大的输入绑定API的一部分),可用于监视非常特定的键事件。这包括单个键击和修饰符。
Key Bindings也使用Actions API,这意味着您可以在程序的许多不同部分重用Action
,而无需每次都重新实现逻辑。
键绑定的替代方法是使用键侦听器。关键听众 有它们作为键盘输入的低级接口的位置,但是 响应个别键键绑定更合适 往往会导致代码更容易维护。关键听众也是 如果在组件时键绑定是活动的则很难 没有焦点。键绑定的一些优点是它们 有点自我记录,将收容层次结构纳入 帐户,鼓励可重复使用的代码块(Action对象),并允许 要轻松删除,自定义或共享的操作。而且,他们做 可以轻松更改操作绑定的键。另一个 Actions的优点是它们具有提供的启用状态 一种简单的方法来禁用该操作,而无需跟踪哪个 它附属的组件。