我如何(本机地)在Java应用程序中实现OSX Lion的全屏功能?
目前给出的答案包含了实现全屏排序功能的好方法。我已经读过Eclipse可能能够使用Lion的“原生”全屏功能。这就是我要问的问题。
答案 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没有。