我有一个Java Swing应用程序,希望在Mac OS X上运行。我想使用普通的Mac复制/粘贴快捷键将文本复制/粘贴到我的Java应用程序中的文本字段。
Ctrl+c和Ctrl+v可以实现这一点,但我想改用Command+c和Command+v。 我该如何做到?
如果您正在使用第三方L&F实现,它可能不支持Mac的本地键盘快捷键。在设置L&F之后,以下代码应该重新启用Mac对于JTextField
的键盘快捷键:
InputMap im = (InputMap) UIManager.get("TextField.focusInputMap");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.META_DOWN_MASK), DefaultEditorKit.copyAction);
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.META_DOWN_MASK), DefaultEditorKit.pasteAction);
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.META_DOWN_MASK), DefaultEditorKit.cutAction);
当然,您只需要在检测到应用程序在Mac上运行时执行此操作,以避免影响其他操作系统的键盘映射。你是在运行纯Swing吗?如果是的话,它应该会自动完成(请注意,如果您不使用应用程序包,则可能不会进行小菜单动画)。如果不是这样,那么您将不得不查阅您正在使用的任何API的文档。
我刚测试了一下,在Snow Leopard上运行良好。
META_DOWN_MASK
是MAC上的命令键。 - camickrgetMenuShortcutKeyMask()
。 - trashgod