2013-06-01 8 views
6

Ho un'applicazione swing con un JPanel, che funge da porta di visualizzazione per la mia applicazione. Voglio che la mia applicazione rimuova tutti i componenti all'interno della porta di visualizzazione quando l'utente fa clic su una voce di menu o su un pulsante e crea i nuovi componenti al suo interno. So come rimuovere un componente all'interno di un contenitore, non è chiaro quale componente è all'interno del porto vista attualmente, quindi penso che non posso usare il codice qui sotto:Come rimuovere tutti i componenti figlio di un contenitore?

viewport.remove(component); 
viewport.revalidate(); 
viewport.repaint(); 

mie domande:

  1. Come rimuovere tutti i componenti all'interno di un contenitore senza sapere quale componente rimuovere?

  2. Questo modo di rimuovere tutti i componenti e creare altri componenti e inserirli nella porta di visualizzazione è corretto?

risposta

7

La risposta diretta alla tua domanda è semplicemente chiamare removeAll() sul contenitore. La risposta migliore però (poiché penso che la tua domanda sia un esempio di XY problem) è quella di utilizzare un CardLayout e semplicemente scambiare i componenti tramite questo layout.

4

Dai un'occhiata alla Removeall() metodo

Rimuove tutti i componenti di questo contenitore. Questo metodo informa inoltre il gestore di layout per rimuovere i componenti dal layout di questo contenitore tramite il metodo removeLayoutComponent.

Problemi correlati