Создание одного компонента на весь экран
Я пытаюсь заставить 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;
}
}
}
Любые другие яркие идеи о том, как этого добиться?