关于如何在Java Swing中捕获击键有很多主题,但我想问一下最佳实践。例如,我有一个窗口,我想听一下Mac上的F1
或Command-P
的按键(或PC上的CTRL-P
)。
阅读The official Javadoc for KeyEvent,似乎使用Key Typed
事件而非Key Pressed
或Key Released
事件是更好的做法,因为它们是更高级别的。这对我来说很有意义,我甚至发现为了确保程序与平台无关,我必须指定一个按键对象:
private KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
这应该允许捕获Mac上的Command
加速键和PC上的CTRL
加速键。 (我希望我能正确使用这些术语。)现在,我有一个KeyStroke
对象,如何根据KeyEvent
中的KeyListener
对象进行检查?并且检查F1
关键事件也只会使问题进一步复杂化,但希望不会太多。
建议?
答案 0 :(得分:3)
现在我有一个KeyStroke对象,如何针对KeyListener中的KeyEvent对象进行检查?
您不使用KeyListener。 Swing旨在与Key Bindings
一起使用。
查看Key Bindings,其中包含一个程序,列出每个Swing组件的默认绑定。它还举例说明了如何创建自己的ey Bindings
。它还包含指向关键绑定的Swing教程的链接,该指南更详细地解释了整个过程