OSX Lion上的Java Apps全屏功能

时间:2011-07-29 13:06:10

标签: java macos fullscreen osx-lion

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

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

6 个答案:

答案 0 :(得分:28)

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

Mac OS X 10.7 Lion全屏支持

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

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

/**
 * @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);
    }
}

答案 1 :(得分:6)

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

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

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

FullScreenUtilities.setWindowCanFullScreen(window,true);

这是切换全屏的方法:

Application.getApplication().requestToggleFullScreen(window);

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:-2)

Java allows you full screen mode, that has nothing to do with Lion.(通过chubbard

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

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