我希望我的应用程序更好地集成Mac OS X.我已经阅读了Mac OS X Integration for Java,我已经知道我必须导入com.apple.eawt.*
并编写一些额外的代码。但是,如果我这样做,我的应用程序将无法在Windows上工作,因为缺少引用。如果我用C编写,我可以使用预处理器命令执行此操作,但这是Java。如何在不将代码文件分成2个分支的情况下执行此操作?
答案 0 :(得分:9)
答案 1 :(得分:3)
我使用反射来查看com.apple.whatever类是否存在,如果是,我调用它。
工作得很好,并没有创造破坏性的进口。
答案 2 :(得分:2)
我之前已经为这些页面添加了书签,这些页面对于调整OS X的Swing应用程序有很好的建议。
答案 3 :(得分:1)
您可以在“主要”功能的开头添加一些内容,使您的“swing”应用程序在MacOSX上看起来更加原生(也适用于10.6)
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Your app name");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (ClassNotFoundException ex) {}
catch (InstantiationException ex) {}
catch (IllegalAccessException ex) {}
catch (UnsupportedLookAndFeelException ex) {}
这将使您的菜单栏进入mac菜单栏。它将在菜单栏中设置您的应用程序名称,并将您的应用程序外观设置为mac OSX l& f。
它不完美,但它是一个快速的开始:)
答案 4 :(得分:0)
您可以让代码查看与操作系统相关的System properties,并在您看到Mac OS X时仅运行代码。
答案 5 :(得分:0)
我觉得这很有帮助,并希望通过更新来回报。 " Mac OS X Integration for Java"网页上有一个名为" J2SE 5.0 Apple Extensions Reference" com.apple.eawt文档(截至2015年12月)不再有效 - 说"抱歉,无法找到该页面"。我尝试在Apple Developer网站上搜索但没有成功。好消息是我发现此链接包含com.apple.eawt的源代码 - http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/macosx/classes/com/apple/eawt
使用com.apple.eawt,我发现不推荐使用removeAboutMenuItem()方法,并且说使用setAboutHandler(AboutHandler)和null参数"代替。但是setAboutHandler(null)不起作用,不推荐的方法也可以。