The macify Notepad example是我能找到的“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 公共(public)链接和附近的 Apple Store。
关于java - 为了 Macify 一个 Java 应用程序,捕捉关于事件,我必须实现一个菜单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7256230/