How can I do full screen in Java on OSX

awt, fullscreen, java, macos

Solution

I think your problem is here:

try {
        gd.setFullScreenWindow(this);
}
finally {
        gd.setFullScreenWindow(null);
}

`finally` blocks are always executed, so what happens here is that you window becomes full screen for a brief instant (if that) and then relinquishes the screen immediately.

Also, `setVisible(true)` is not necessary when you have previously called `setFullScreenWindow(this)`, according to the Javadocs.

So I would change the constructor to this:

public FullScreenFrame() {
    addKeyListener(this);

    GraphicsDevice gd =
            GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();

    if (gd.isFullScreenSupported()) {
        setUndecorated(true);
        gd.setFullScreenWindow(this);
    } else {
        System.err.println("Full screen not supported");
        setSize(100, 100); // just something to let you see the window
        setVisible(true);
    }
}

Problem

I've been trying and failing to use the java full screen mode on the primary display of an OSX system. Whatever I've tried I can't seem to get rid of the 'apple' menu bar from the top of the display. I really need to paint over the entire screen. Can anyone tell me how to get rid of the menu? I've attached an example class which exhibits the problem - on my system the menu is still visible where I would expect to see a completely blank screen. ``` import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; public class FullScreenFrame extends JFrame implements KeyListener { public FullScreenFrame () { addKeyListener(this); setUndecorated(true); GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); if (gd.isFullScreenSupported()) { try { gd.setFullScreenWindow(this); } finally { gd.setFullScreenWindow(null); } } else { System.err.println("Full screen not supported"); } setVisible(true); } public void keyTyped(KeyEvent e) {} public void keyPressed(KeyEvent e) {} public void keyReleased(KeyEvent e) { setVisible(false); dispose(); } public static void main (String [] args) { new FullScreenFrame(); } } ```

Original source

Related problems