Realización de un solo componente a pantalla completa.

Estoy tratando de hacer que un JPanel vaya a pantalla completa cuando haces clic en un botón, y de nuevo cuando presionas el botón de escape.

Me las arreglé para hacer que la ventana salga a pantalla completa, pero debido a todo lo relacionado con agregar componentes al eliminarlos de otros contenedores, termino con un JPanel en blanco.

Elegí hacer un JFrame separado para representar la pantalla completa, cuya clase es la siguiente (tenga en cuenta que esta es una clase interna, por lo que myPanel se refiere a un panel que ya existe en MyJFrame):

public class FullScreen extends JFrame {

    private static final long serialVersionUID = 1L;

    private GraphicsDevice device;

    private boolean isFullScreen;

    public FullScreen() {
        this.setContentPane(myPanel);
        this.setUndecorated(true);

        // Fullscreen return
        this.addKeyListener(new KeyListener() {
            @Override
            public void keyPressed(KeyEvent e) {
                // Exit fullscreen when ESC pressed
                if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    exitFullScreen();
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {
            }

            @Override
            public void keyTyped(KeyEvent e) {
            }
        });
    }

    public void enterFullScreen() {
        if (!isFullScreen) {
            // Get the current device
            GraphicsEnvironment graphicsEnvironment = 
                    GraphicsEnvironment.getLocalGraphicsEnvironment();
            device = graphicsEnvironment.getDefaultScreenDevice();

            if (device.isFullScreenSupported()) {
                // Make the current window invisible
                MyJFrame.this.setVisible(false);
                // Set the full screen window
                device.setFullScreenWindow(this);
                isFullScreen = true;
            }
        }
    }

    public void exitFullScreen() {
        if (isFullScreen) {
            // Reset the full screen window
            device.setFullScreenWindow(null);
            MyJFrame.this.setVisible(true);
            isFullScreen = false;
        }
    }
}

¿Alguna otra idea brillante sobre cómo lograr esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta