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

2022-01-20 00:00:00 复制 paste macos java swing

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

I have a Java Swing application that i want to run on Mac OS X. I want to use the normal Mac copy/paste shortcuts to copy/paste text to a text field in my Java application.

Ctrl+c &Ctrl+v 可以解决问题,但我想使用 Command+c &Command+v 代替.我该怎么做?

Ctrl+c & Ctrl+v does the trick but i want to use Command+c & Command+v instead. How can i do that?

推荐答案

如果您使用的是 3rd-party L&F 实现,它可能不支持 Mac 的本机键盘快捷键.以下代码应在设置 L&F 后恢复 Mac 的 JTextFields 键盘快捷键:

If you're using a 3rd-party L&F implementation it probably doesn't support the Mac's native keyboard shortcuts. The following code should reinstate the Mac's keyboard shortcuts for JTextFields after setting the L&F:

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 上运行,您只需要这样做,这样您就不会影响其他操作系统的键盘映射.

Of course you'll only need to do this if you detect that the application is running on a Mac so that you don't affect the keyboard mappings for other OS's.

相关文章