【发布时间】:2017-07-24 15:01:51
【问题描述】:
我正在尝试将 KeyListener 添加到我的 JFrame 中,按下的键将执行 ActionListener 类中的所有代码。
例子:
当我按下 F1 时,它将触发 ActionListener 类。执行所有说明。
有什么帮助吗? 提前谢谢你。
【问题讨论】:
标签: java swing jframe actionlistener keylistener
我正在尝试将 KeyListener 添加到我的 JFrame 中,按下的键将执行 ActionListener 类中的所有代码。
例子:
当我按下 F1 时,它将触发 ActionListener 类。执行所有说明。
有什么帮助吗? 提前谢谢你。
【问题讨论】:
标签: java swing jframe actionlistener keylistener
没有 KeyListener “调用” ActionListener。而是使用所有指令创建一个单独的方法,并让 KeyListener 和 ActionListener 调用这个相同的方法。
同样在这种情况下,不要使用当键盘焦点发生变化时行为反复无常的 KeyListener,而应使用Key Bindings。
【讨论】:
按下的键将执行 ActionListener 类中的所有代码。
您可以使用Action,而不是使用ActionListener。 Action 与 ActionListner 基本相同,但您可以定义额外的属性,使其更易于与键盘一起使用。阅读 How to Use Actions 上的 Swing 教程中的部分以获取更多信息和工作示例。作为旁注,Swing 组件旨在使用 Actions。
创建Action 后,您有不同的选择:
您可以将Action 添加到JMenuItem,如果您定义了“加速器”键,那么当按下 F1 键时,Action 将被自动调用。
如果您不使用JMenuItem,则需要手动将KeyStroke 绑定到Action。有关手动添加绑定的基础知识,请参阅 Swing 教程中有关 [如何制作和删除键绑定] 的部分。(http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html#howto)。
【讨论】: