Java - 如何挂钩到Mac OS上的“复制和粘贴”菜单

时间:2012-04-15 04:21:39

标签: java macos swing

我知道你可以:

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

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

但是我找不到任何东西来挂钩复制和粘贴菜单,这样当它被调用时,当前选择的JTextField将受到影响(例如粘贴会将剪贴板粘贴到选定的JTextField中。

1 个答案:

答案 0 :(得分:4)

与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所示。最后,Charles Bell的HTMLDocumentEditor是一个使用text actions的例子。