Fullscreen feature for Java Apps on OSX Lion

别说谁变了你拦得住时间么 提交于 2019-11-26 22:14:56

问题


How can I (natively) implement the fullscreen feature of OSX Lion in a Java application?

The current answers given incorporate a good method for achieving a sort-of-fullscreen feature. I've read that Eclipse may be able to use the "native" fullscreen feature of Lion. That's what I'm asking about.


回答1:


I found this on Apple's Java release notes:

Mac OS X 10.7 Lion Fullscreen Support

Java applications on Lion can now opt into the Fullscreen window feature per-window. Developers can use the com.apple.eawt.FullScreenUtilities class to mark windows as able to be full screened, and the com.apple.eawt.Application.requestToggleFullScreen(Window) method to programmatically request the window enter and exit full screen mode. This API does nothing on Mac OS X 10.6 Snow Leopard.

More explicitly, try calling this early on from the constructor of your JFrames...

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



回答2:


I don't know about natively, but Java does support fullscreen applications without needing native code:

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

The question is has Apple implemented that with Lion in their JDK.




回答3:


For those of you who do not mind a quick and dirty solution:

Call getRootPane().putClientProperty("apple.awt.fullscreenable", Boolean.valueOf(true)) from the Frame constructor. This is what setWindocCanFullScreen does.




回答4:


What you are trying to do can be done through the com.apple.eawt library. Additionally in order to avoid writing code through reflection if you also deploy your application on other OSes like Windows, Linux etc. you should use and distribute embeded within your application the AppleJavaExtensions.jar from Apple.

This is the method to make a frame expandable in full screen:

FullScreenUtilities.setWindowCanFullScreen(window,true);

And this is the method to toggle full screen:

Application.getApplication().requestToggleFullScreen(window);

where the parameter window is the JFrame of your application that you are trying to make full screen capable.

To see an example application have a look at RationalPlan Project.




回答5:


Please file a bug report with Apple. They maintain Java on OS X and it should conform to their published standards.




回答6:


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

If you want to write native Cocoa applications with Java, you need to use JavaBridge. However, JavaBridge is deprecated.

My recommendation is: If you want to write native OSX Cocoa applications, do it in Objective C or Macruby. MacRuby is currently receiving funding from Apple (Sansonetti is a full-time Apple employee) and might just have a future with Cocoa. Java doesn't.



来源:https://stackoverflow.com/questions/6873568/fullscreen-feature-for-java-apps-on-osx-lion

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!