我正在编写一款Java应用程序,旨在适用于所有平台,但特别是针对OS X的外观和集成进行开发(我在MacBook Pro上使用NetBeans)。我想要访问应用程序的菜单,即以应用程序命名的加粗菜单。我想要为“关于”和“退出”菜单项注册监听器,并显示“偏好设置”菜单项。我也不介意添加一些自己的菜单项。
在我的主类中,我使用以下代码来确定是否在 Mac 上运行:
如果是真的,那么我只需创建一个新的MacOSXAboutHandler实例。构造函数将添加我的处理程序,并且无论何时应用程序运行(甚至在NetBeans中进行测试),单击粗体菜单上的“关于…”项目都会执行我在AboutHandler中指定的代码。
对于偏好设置和退出,操作也是同样的,只需将“about”出现的位置替换为适当的操作。所有这些处理程序都像任何其他Java监听器一样编写。
那么,我该如何实现这个功能呢?我看到过以前的帖子提到了OSXAdapter,但是苹果公司的天才们决定将其从库中删除(或者将其重命名得很模糊),因为所有链接都指向主页面,而我的所有搜索都是徒劳无功的。我还看到过一个 MacOSAppAdapter类,但我不确定如何使用它。所有的导入、新类和层次结构都有些令人困惑。
编辑:
这就是我为关于、偏好设置和退出菜单项设置监听器的方法:
我创建了一个新类,MacOSXAboutHandler,它继承了
com.apple.eawt.Application
它的构造函数只是调用
setAboutHandler(AboutHandler aH)
我提供了自己的监听器来扩展它
AboutHandler
在我的主类中,我使用以下代码来确定是否在 Mac 上运行:
System.getProperty("os.name").contains("mac")
如果是真的,那么我只需创建一个新的MacOSXAboutHandler实例。构造函数将添加我的处理程序,并且无论何时应用程序运行(甚至在NetBeans中进行测试),单击粗体菜单上的“关于…”项目都会执行我在AboutHandler中指定的代码。
对于偏好设置和退出,操作也是同样的,只需将“about”出现的位置替换为适当的操作。所有这些处理程序都像任何其他Java监听器一样编写。
setAboutHandler(AboutHandler aH)
添加您的监听器的新实例即可。 - CAG Gonzo