Создание одного компонента на весь экран

Я пытаюсь заставить JPanel работать в полноэкранном режиме, когда вы нажимаете кнопку, и обратно, когда вы нажимаете клавишу escape.

Мне удалось заставить окно перейти на полный экран, но из-за добавления компонентов, удаляющих их из других контейнеров, я получил пустой JPanel.

Я решил создать отдельный JFrame для отображения в полноэкранном режиме, класс которого выглядит следующим образом (обратите внимание, что это внутренний класс, поэтому myPanel ссылается на панель, которая уже существует в 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;
        }
    }
}

Любые другие яркие идеи о том, как этого добиться?

Ответы на вопрос(0)

Ваш ответ на вопрос