Java - 如何连接到 Mac OS 上的复制和粘贴菜单

标签 java macos swing

我知道您可以:

// Where CustomMacOSXController implements implements MRJAboutHandler, ...
CustomMacOSXController macOSXController = new CustomMacOSXController()

MRJApplicationUtils.registerAboutHandler(macOSXController); 
MRJApplicationUtils.registerPrefsHandler(macOSXController);
//... and so on

但是我找不到任何东西来 Hook 复制和粘贴菜单,以便在调用它时,当前选择的 JTextField 会受到影响(例如,粘贴会将剪贴板粘贴到所选的 JTextField 中。

最佳答案

与 Mac OS X 系统和应用程序菜单不同,编辑菜单完全在您的程序范围内。您必须使用适当的 Action 创建并填充它. javax.swing.text.TextAction 中定义的预定义子类很方便,因为他们知道重点组件。另见此相关 Q&Aexample .例如,

Action pasteAction = new DefaultEditorKit.PasteAction();
JMenuItem pasteItem = new JMenuItem(pasteAction);
JButton pasteButton = new JButton(pasteAction);

附录:要将您的“编辑”菜单完全集成到 Mac OS X 中,您必须使用所示方法之一告诉操作系统使用您的菜单 here .要获取依赖于平台的修改键,请使用 getMenuShortcutKeyMask(),如图所示 here .最后,查尔斯·贝尔的 HTMLDocumentEditor是一个使用 text actions 的示例.

关于Java - 如何连接到 Mac OS 上的复制和粘贴菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159469/

相关文章:

java - 如何在div中执行或加载servlet?

python - Mac 用 brew 安装 python3.6

macos - 记住 OS X 中的终端状态(比如 shell 的 Fluid...)

macos - NSImage 总是被缩放并且看起来很糟糕

java - JFrame:如何在没有 JTextArea/JTextField 的情况下显示文本

Java 数据绑定(bind) : how to display data in a JTable?

java - 整数的最后 n 位

java - 在文件大小和时间上滚动 logback 日志

显示构造对话框时未选择 Java swing 复选框

Java For 循环作为参数