OSX Lion上的Java应用程序的全屏function

我如何(本机地)在Java应用程序中实现OSX Lion的全屏function?

目前给出的答案包含了实现全屏排序function的好方法。 我已经读过Eclipse可能能够使用Lion的“原生”全屏function。 这就是我要问的问题。

我在Apple的Java发行说明中发现了这个:

Mac OS X 10.7 Lion全屏支持

Lion上的Java应用程序现在可以选择进入每个窗口的全屏窗口function。 开发人员可以使用com.apple.eawt.FullScreenUtilities类将窗口标记为能够完全筛选,并使用com.apple.eawt.Application.requestToggleFullScreen(Window)方法以编程方式请求窗口进入和退出全屏模式。 此API在Mac OS X 10.6 Snow Leopard上不执行任何操作。

更明确地说,尝试从JFrame的构造函数中尽早调用它…

 /** * @param window */ @SuppressWarnings({"unchecked", "rawtypes"}) public static void enableOSXFullscreen(Window window) { Preconditions.checkNotNull(window); try { Class util = Class.forName("com.apple.eawt.FullScreenUtilities"); Class params[] = new Class[]{Window.class, Boolean.TYPE}; Method method = util.getMethod("setWindowCanFullScreen", params); method.invoke(util, window, true); } catch (ClassNotFoundException e1) { } catch (Exception e) { log.log(Level.WARNING, "OS X Fullscreen FAIL", e); } } 

我不知道本地,但Java确实支持全屏应用程序而不需要本机代码:

http://saipullabhotla.blogspot.com/2012/05/enabling-full-screen-mode-for-java.html

问题是Apple是否在他们的JDK中实现了Lion。

您要做的是通过com.apple.eawt库完成的。 此外,如果您还在Windows,Linux等其他操作系统上部署应用程序,则应避免通过reflection编写代码,您应该在Apple应用程序中使用并分发嵌入AppleJavaExtensions.jar 。

这是使帧可以全屏展开的方法:

 FullScreenUtilities.setWindowCanFullScreen(window,true); 

这是切换全屏的方法:

 Application.getApplication().requestToggleFullScreen(window); 

其中参数窗口是您尝试使全屏function的应用程序的JFrame。

要查看示例应用程序,请查看RationalPlan Project 。

对于那些不介意快速而肮脏的解决方案的人:

从Frame构造函数中调用getRootPane().putClientProperty("apple.awt.fullscreenable", Boolean.valueOf(true)) 。 这就是setWindocCanFullScreen作用。

请向Apple提交错误报告。 他们在OS X上维护Java,它应该符合他们发布的标准。

Java允许您使用全屏模式,这与Lion无关。 (通过chubbard )

如果要使用Java编写本机Cocoa应用程序,则需要使用JavaBridge 。 但是,JavaBridge已弃用。

我的建议是:如果要编写本机OSX Cocoa应用程序,请在Objective C或Macruby中执行 。 MacRuby目前正在接受Apple的资助(Sansonetti是一名全职的Apple员工),可能只有Cocoa的未来。 Java没有。