如何在Mac上使用Command-c / Command-v快捷键复制/粘贴文本?

16

我有一个Java Swing应用程序,希望在Mac OS X上运行。我想使用普通的Mac复制/粘贴快捷键将文本复制/粘贴到我的Java应用程序中的文本字段。

Ctrl+cCtrl+v可以实现这一点,但我想改用Command+cCommand+v。 我该如何做到?

3个回答

21

如果您正在使用第三方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上运行时执行此操作,以避免影响其他操作系统的键盘映射。

+1,(因为我不使用MAC),我总是忘记META_DOWN_MASK是MAC上的命令键。 - camickr
7
不要硬编码数值,使用getMenuShortcutKeyMask() - trashgod
1
我在这里运行这段代码:if (System.getProperty("os.name", "").toUpperCase().startsWith("MAC")) - martins.tuga

1
你是否看过、知道或正在使用由Eclipse维护的SWT(标准窗口小部件工具包)?它有一个用于命令的按键(SWT.COMMAND)。

我正在使用 Swing。有办法在 Swing 中实现这个吗? - Brad

1

你是在运行纯Swing吗?如果是的话,它应该会自动完成(请注意,如果您不使用应用程序包,则可能不会进行小菜单动画)。如果不是这样,那么您将不得不查阅您正在使用的任何API的文档。

我刚测试了一下,在Snow Leopard上运行良好。


我有一台Mac电脑,在JTextField中只有Ctrl + v可以用来粘贴文本...命令+v无法使用。 - Brad
你使用的操作系统版本是什么?另外,你使用的是哪种外观和感觉?如果是默认设置,则绑定应该可以正常工作(如果不能正常工作,则可能需要向苹果报告错误)。我刚刚测试了一个非常基本的Swing应用程序,cmd-c/v可以很好地工作,但我在Snow Leopard上使用了默认的外观和感觉。 - user439407

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接