java - 比较 KeyListeners 和 Key Bindings 之间的功能

标签 java swing key-bindings keylistener

当匿名用户对我的涉及 KeyListeners 的回答投反对票并建议改用 Key Bindings 时,出现了这个问题。这位匿名用户告诉我,KeyListener 接口(interface)是一个旧的 AWT 解决方案,不应使用。

但是,我不知道我是否应该完全相信这些信息。我在各种网站上都进行了研究,包括 oracle,但没有发现任何关于 KeyListeners 或 Key Bindings 的功能。我知道这两者执行类似的任务,但不确定“幕后”究竟发生了什么,可以这么说。

我有点倾向于在未来的项目中使用 Key Bindings,因为我获得的研究表明 KeyListener 接口(interface)要求相关组件具有焦点,而 Key Bindings 则不需要。但是,我很困惑。为什么会这样? Key Bindings 的触发方式与 KeyListeners 有何不同?

P.S. 我很确定这很少见,但在某些情况下使用 KeyListeners 更合适吗?

最佳答案

How to Use Key Bindings解释基础知识。

绑定(bind)用于将特定的 Action 映射到特定的 KeyStroke。

当所有其他抽象都不起作用时,KeyListener 是最后的手段。也许您会在监听任何 KeyStroke 时使用 KeyListener。因此,为字母表中的所有字母创建 26 个绑定(bind)是不切实际的。

但在许多情况下,还有更好的 API 可供使用。例如,您可以使用 DocumentListener 来监听文档的更改,而不是在文本字段上监听 KeyEvents。

关于java - 比较 KeyListeners 和 Key Bindings 之间的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664250/

相关文章:

java - 如何将学生日间出勤存储在数据库中并在JTable中显示?

emacs - 重新映射 Emacs 命令

wpf - 带有绑定(bind)集合的 Window.InputBindings

java - 我需要什么凭据才能通过 Api 连接到 Workday

java - 如何在Java中制作一个向下的数字三角形?

java - 混合使用 JavaFX 和 Swing

java - 如何将值从文本字段传递到对象或文件(可序列化文件)?

java - 尝试并捕获用户输入导致变量未初始化

java - 使 SimpleDateFormat.parse() 在无效日期上失败(例如,月份大于 12)

java - 多个键的 InputMap