我如何在Java应用程序中(natively)实现OSX Lion的全屏功能?
当前给出的答案包含了一种实现类似于全屏的方法。我已经阅读过Eclipse可以使用Lion的"native"全屏功能。这就是我所问的。
我如何在Java应用程序中(natively)实现OSX Lion的全屏功能?
当前给出的答案包含了一种实现类似于全屏的方法。我已经阅读过Eclipse可以使用Lion的"native"全屏功能。这就是我所问的。
我在苹果的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
构造函数中尝试早期调用此方法...
/**
* @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);
}
}
如果您不介意使用快速而简单的解决方案:
在Frame构造函数中调用getRootPane().putClientProperty("apple.awt.fullscreenable", Boolean.valueOf(true))
。这就是setWindocCanFullScreen
所做的。
这是使框架全屏可扩展的方法:
FullScreenUtilities.setWindowCanFullScreen(window,true);
这是切换全屏的方法:
Application.getApplication().requestToggleFullScreen(window);
其中参数window是您正在尝试使其全屏的应用程序的JFrame。
要查看示例应用程序,请查看RationalPlan Project。
Java允许您使用全屏模式,这与Lion无关。(通过{{link2:chubbard}})
如果您想使用Java编写本地Cocoa应用程序,则需要使用{{link3:JavaBridge}}。但是,JavaBridge已被弃用。
我的建议是:如果您想编写本地OSX Cocoa应用程序,请使用Objective C或{{link4:Macruby}}。 MacRuby目前正在接受来自Apple的资金支持(Sansonetti是全职Apple员工),并且可能会成为Cocoa的未来。Java不行。