Great news! Hopefully the Oracle update does indeed clear this issue up.
In the meantime, I have been experimenting with the new FullScreenUtilities classes that provide for greater integration with the OS X experience. If you're not looking to have a kiosk-like experience (no Command-Tab app switching, LaunchPad, MissionControl, etc.), then this might provide a better path for your application. These classes work on Mac OS X 10.7.1 and Java 7u4 and above (at least, that was my earliest test platform).
Instead of the call to
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(frame);
you would initially call this a single time on your frame
enableOSXFullscreen(frame);
and then this whenever you wanted to enter or exit fullscreen mode
toggleOSXFullscreen(frame);
I implemented it using reflection so that this will compile across platforms. The original StackOverflow question has the complete code update, but here are the methods for convenience:
/**
* Hint that this Window can enter fullscreen. Only need to call this once per Window.
* @param window
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public static void enableOSXFullscreen(Window 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) {
System.out.println("Failed to enable Mac Fullscreen: "+e);
}
}
/**
* Toggle OSX fullscreen Window state. Must call enableOSXFullscreen first.
* Reflection version of: com.apple.eawt.Application.getApplication().requestToggleFullScreen(f);
* @param window
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public static void toggleOSXFullscreen(Window window) {
try {
Class appClass = Class.forName("com.apple.eawt.Application");
Method method = appClass.getMethod("getApplication");
Object appInstance = method.invoke(appClass);
Class params[] = new Class[]{Window.class};
method = appClass.getMethod("requestToggleFullScreen", params);
method.invoke(appInstance, window);
} catch (ClassNotFoundException e1) {
} catch (Exception e) {
System.out.println("Failed to toggle Mac Fullscreen: "+e);
}
}