2013-06-01 19 views
6

Mam aplikację swing z JPanel, który działa jako port widoku dla mojej aplikacji. Chcę, aby moja aplikacja usunęła wszystkie komponenty wewnątrz portu widoku, gdy użytkownik kliknie element menu lub przycisk i utworzy w nim nowe składniki. wiem jak usunąć element z wewnątrz pojemnika, nie jest jasne, który składnik jest wewnątrz portu podglądać obecnie, więc myślę, że nie można skorzystać z poniższego kodu:Jak usunąć wszystkie elementy potomne kontenera?

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

moje pytania:

  1. Jak usunąć wszystkie elementy wewnątrz pojemnika, nie wiedząc, który element należy usunąć?

  2. Czy ten sposób usuwania wszystkich komponentów i tworzenia innych komponentów oraz wstawiania ich do portu widoku jest prawidłowy?

Odpowiedz

7

Bezpośrednią odpowiedzią na pytanie jest po prostu wywołanie removeAll() na pojemniku. Jednak lepszą odpowiedzią (ponieważ myślę, że twoje pytanie jest przykładem XY problem) jest użycie CardLayout i po prostu wymiana komponentów za pomocą tego układu.

4

przyjrzeć się Removeall() metody

Usuwa wszystkie elementy z tego pojemnika. Ta metoda powiadamia również menedżera układu o usunięciu komponentów z układu tego kontenera za pomocą metody removeLayoutComponent.

Powiązane problemy