在Java Swing中捕获特定的击键

时间:2014-08-12 14:00:36

标签: java swing keylistener keyevent keystroke

关于如何在Java Swing中捕获击键有很多主题,但我想问一下最佳实践。例如,我有一个窗口,我想听一下Mac上的F1Command-P的按键(或PC上的CTRL-P)。

阅读The official Javadoc for KeyEvent,似乎使用Key Typed事件而非Key PressedKey Released事件是更好的做法,因为它们是更高级别的。这对我来说很有意义,我甚至发现为了确保程序与平台无关,我必须指定一个按键对象:

private KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());

这应该允许捕获Mac上的Command加速键和PC上的CTRL加速键。 (我希望我能正确使用这些术语。)现在,我有一个KeyStroke对象,如何根据KeyEvent中的KeyListener对象进行检查?并且检查F1关键事件也只会使问题进一步复杂化,但希望不会太多。

建议?

1 个答案:

答案 0 :(得分:3)

  

现在我有一个KeyStroke对象,如何针对KeyListener中的KeyEvent对象进行检查?

您不使用KeyListener。 Swing旨在与Key Bindings一起使用。

查看Key Bindings,其中包含一个程序,列出每个Swing组件的默认绑定。它还举例说明了如何创建自己的ey Bindings。它还包含指向关键绑定的Swing教程的链接,该指南更详细地解释了整个过程