【问题标题】:Java - How to hook into the Copy and Paste menu on the Mac OSJava - 如何连接到 Mac OS 上的复制和粘贴菜单
【发布时间】:2012-04-26 22:01:40
【问题描述】:

我知道您可以:

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

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

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

【问题讨论】:

    标签: java macos swing


    【解决方案1】:

    与 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 的示例。

    【讨论】:

    • 对不起,我不太明白你在说什么。在这种情况下,您将一个 Action 附加到一个新的 JMenuItem 和 JButton,但它不会将它链接到 Apple 应用程序中的 Copy and Paste 菜单...
    • 另请参阅 answer 关于将 Java 菜单移至 Mac 菜单栏和此 anwser 关于菜单加速器。
    • 好像你家里有一个魔法盒子,你会从里面到处带来这些精彩的例子:-),如果可以的话,给我发一个:-)
    • @nIcEcOw:这个example 展示了如何转发一个Action到另一个。
    • 啊哈,这个厉害了,从来没用过Action这样的,一个事件可以触发别人的事件。太棒了:-)
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多