Estoy escribiendo un programa donde tengo un JFrame y deseo eliminar todos los componentes del mismo, luego agregarle solo un componente y volver a pintar el marco. Lo que tengo hasta ahora es algo así como el código de abajo (llamada en un objeto que implementa JFrame, donde StartPanel implementa JPanel):¿Cómo eliminar todos los componentes de un JFrame en Java?
removeAll();
startPanel = new StartPanel();
startPanel.setVisible(true);
add(startPanel);
revalidate();
repaint();
Sin embargo, cuando ejecuto el código que muestra una ventana vacía (no el startPanel) y cuando minimizo/cambio el tamaño de la ventana, la ventana se vuelve negra. Si dejo fuera el removeAll()
y ya no hay elementos en el JFrame, muestra el panel de inicio muy bien. ¿Alguna idea sobre cómo eliminar realmente todo y luego mostrar el panel nuevo?
Una palabra: [CardLayout] (http: // docs.oracle.com/javase/tutorial/uiswing/layout/card.html) –
@HovercraftFullOfEels que podría funcionar, pero ¿hay alguna otra manera de hacerlo manualmente? y ¿por qué no funciona removeAll() como creo que debería? ¿Qué pasa si en otras partes del código necesito tener algunas combinaciones de diferentes componentes (no solo uno a la vez), entonces no quiero un CardLayout? – scaevity