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?