从Java访问Mac OS X应用程序菜单

5
我正在编写一款Java应用程序,旨在适用于所有平台,但特别是针对OS X的外观和集成进行开发(我在MacBook Pro上使用NetBeans)。我想要访问应用程序的菜单,即以应用程序命名的加粗菜单。我想要为“关于”和“退出”菜单项注册监听器,并显示“偏好设置”菜单项。我也不介意添加一些自己的菜单项。

那么,我该如何实现这个功能呢?我看到过以前的帖子提到了OSXAdapter,但是苹果公司的天才们决定将其从库中删除(或者将其重命名得很模糊),因为所有链接都指向主页面,而我的所有搜索都是徒劳无功的。我还看到过一个 MacOSAppAdapter类,但我不确定如何使用它。所有的导入、新类和层次结构都有些令人困惑。

编辑:

这就是我为关于、偏好设置和退出菜单项设置监听器的方法:

我创建了一个新类,MacOSXAboutHandler,它继承了

com.apple.eawt.Application

它的构造函数只是调用

setAboutHandler(AboutHandler aH)

我提供了自己的监听器来扩展它

AboutHandler

在我的主类中,我使用以下代码来确定是否在 Mac 上运行:
System.getProperty("os.name").contains("mac")

如果是真的,那么我只需创建一个新的MacOSXAboutHandler实例。构造函数将添加我的处理程序,并且无论何时应用程序运行(甚至在NetBeans中进行测试),单击粗体菜单上的“关于…”项目都会执行我在AboutHandler中指定的代码。
对于偏好设置和退出,操作也是同样的,只需将“about”出现的位置替换为适当的操作。所有这些处理程序都像任何其他Java监听器一样编写。
1个回答

3
你可能想要查看将Java应用程序引入Mac OS X以及(更重要的)将Java应用程序引入Mac OS X第二部分将Java应用程序引入Mac OS X第三部分 你可能会发现Mac上的Java系统属性参考很有用
你可能想要查看苹果的Java 6扩展API,从我简短的阅读中可以看出,你基本上希望使用默认实例如果com.apple.eawt.Application并提供所需的处理程序(例如setAboutHandler)。
您还可以阅读Java在Mac OS X上关于、退出和首选项菜单项和事件文章,这应该提供一些更多的提示。

我已经阅读了其中的部分。我试图理解它们的过程和代码,但是让我感到困惑。我误解了他们的设置。以下是我为了连接“关于”菜单项所做的操作(适用于首选项、退出等): 设置一个自定义类(比如CustomMac),该类扩展com.apple.eawt.Application。在该类中(或其他地方)创建一个监听器类,该类扩展AboutHandler,并在其中执行所需操作。CustomMac构造函数只需使用setAboutHandler(AboutHandler aH)添加您的监听器的新实例即可。 - CAG Gonzo
我现在不在我的 Mac 前面,所以等我回家后再看一下(反正我对长期的答案很感兴趣 ;)) - MadProgrammer
@StephaneGrenier 是哪个?有六个,它们对我都是打开的。 - MadProgrammer
@StephaneGrenier 现在他们做了。 - MadProgrammer

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