macify 记事本示例是我能找到的唯一一个“macification”示例,除了完全搞砸了我的布局的菜单之外,我猜这一切都很好而且很漂亮。我在 Java 方面非常非常新,所以我会严格按照这些示例进行操作,但是这个菜单确实必须取消。有没有办法在没有菜单的情况下捕捉“关于”的东西?毕竟,即使没有 Mac OS 上的这个东西,它似乎也存在。标准程序等。我没有 Mac 来测试代码,所以反复试验受到严重限制......
这是怎么做到的?
macify 记事本示例是我能找到的唯一一个“macification”示例,除了完全搞砸了我的布局的菜单之外,我猜这一切都很好而且很漂亮。我在 Java 方面非常非常新,所以我会严格按照这些示例进行操作,但是这个菜单确实必须取消。有没有办法在没有菜单的情况下捕捉“关于”的东西?毕竟,即使没有 Mac OS 上的这个东西,它似乎也存在。标准程序等。我没有 Mac 来测试代码,所以反复试验受到严重限制......
这是怎么做到的?
有点死灵帖子,但这是我一直使用的代码。但是,它很复杂,并且使用反射来避免在非 Mac 系统上引发错误。
在您的应用程序的初始化或作为静态代码块:
if (System.getProperty("os.name").contains("Mac")) {
try {
Object app = Class.forName("com.apple.eawt.Application")
.getMethod("getApplication")
.invoke(null);
Object al = Proxy.newProxyInstance(
Class.forName("com.apple.eawt.AboutHandler").getClassLoader(),
new Class[]{Class.forName("com.apple.eawt.AboutHandler")},
new AboutListener()
);
app.getClass()
.getMethod("setAboutHandler", Class.forName("com.apple.eawt.AboutHandler"))
.invoke(app, al);
}
catch (Exception e) {
//fail quietly
}
}
在最后一个大括号之后的源文件底部
public class AboutListener implements InvocationHandler {
public Object invoke(Object proxy, Method method, Object[] args) {
//Show About Dialog
return null;
}
}
当在 java 中发布一个完整的应用程序时,像这样的事情会产生很好的小触动。这应该主要是可以复制和粘贴的,但您需要添加一两行来显示一个关于框。如果你需要测试真的很糟糕,请使用 web-start、Dropbox 公共链接和附近的 Apple Store。