Java KeyListener和KeyBinder之间有什么区别?

Java KeyListener和KeyBinder之间有什么区别?,java,swing,keyboard,keylistener,Java,Swing,Keyboard,Keylistener,标题几乎概括了这一点。我不熟悉在程序中使用键盘,我想知道是什么使它们不同,哪个更容易使用,等等。KeyListener是AWT和Swing最初使用的机制,允许组件注册对按键事件的兴趣。它是一个低级API,提供了有关关键事件(如修饰符)的大量信息 由于许多原因,在大多数情况下不鼓励使用这种监控关键事件的方法。第一个事实是,为了让组件通过这个API接收按键事件,它必须是可聚焦的,并且具有当前的键盘焦点。这是一个陷阱,99%的问题都与关键听众有关 第二个是关于代码的外观,传统上,使用KeyListen

标题几乎概括了这一点。我不熟悉在程序中使用键盘,我想知道是什么使它们不同,哪个更容易使用,等等。

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

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

第二个是关于代码的外观,传统上,使用KeyListener需要有一个大的if-else语句,同时考虑到不同的按键及其潜在的修饰语,随着时间的推移,这可能会变得很麻烦——同样的批评也可能会针对ActionListener

密钥绑定是一种较新的API,是更大的输入绑定API的一部分,可用于监视非常特定的密钥事件。这包括单个关键点笔划和修改器

键绑定也使用API,这意味着您可以在程序的许多不同部分重用操作,而无需每次重新实现逻辑

键绑定的替代方法是使用键侦听器。关键听众 作为键盘输入的低级接口,但 对单个键的响应键绑定更合适、更可靠 倾向于生成更易于维护的代码。关键侦听器也是 当组件启动时,如果要激活密钥绑定,则很困难 没有焦点。键绑定的一些优点是 有点自我记录,将包含层次结构纳入 帐户,鼓励代码操作对象的可重用块,并允许 易于删除、自定义或共享的操作。而且,他们制造 更改操作绑定到的键很容易。另一个 操作的优点是它们有一个启用状态,该状态提供 一种简单的方法,可以禁用该操作,而无需跟踪 它所连接的组件


请问一个我们能肯定回答的问题。“到目前为止你都试了些什么?”汤姆卡曼:哦,算了吧。我将删除这篇文章。一般来说,对Swing应用程序使用键绑定,而不是键侦听器。这些教程将解释所有。KeyBinding的优点是它可以正确处理焦点组件、其取消器和子组件的问题,而keylistener只能处理焦点组件。此外,它们还简化了在不同情况下重复使用相同操作的过程。基本上,您应该始终使用键绑定。在某些情况下,例如对于文本组件,您可能会尝试使用KeyListener,但还有其他接口,例如在这种情况下的DocumentListener。@计算机学个人来说,我没有发现这个问题有任何问题,只是可能不适合这样做,但是,由于99%与关键事件相关的问题都与应该使用键绑定时使用键侦听器的人有关,我对此表示欢迎。谢谢。这就是我想知道的。抱歉问得不好。正如我所说的,我不认为这个问题是个不好的问题,我真的很喜欢,它可能不太适合。有很多人可以从这个问题中学到一些东西,我将在他们发帖询问KeyListener为什么不起作用时,再联系他们。虽然严格来说,这不是一个很好的问题,但我认为,不管怎样,当涉及到一个好问题时,人们都需要有一个更灵活的方式。