2013-06-01 32 views
6

我有一個JPanel的揮杆應用程序,它作爲我的應用程序的視口。我希望我的應用程序在用戶單擊菜單項或按鈕時刪除視圖端口內的所有組件,並在其中創建新組件。 我知道如何從一個容器中刪除組件,目前尚不清楚哪一個組件是當前視口內,所以我覺得我不能下面的代碼使用方法:如何刪除容器中的所有兒童組件?

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

我的問題:

  1. 如何刪除容器內的所有組件而不知道要刪除哪個組件?

  2. 是這種方式刪除所有組件,並創建其他組件,並將它們插入視圖端口是否正確?

回答

7

您的問題的直接答案是簡單地在容器上調用removeAll()。更好的答案雖然(因爲我認爲你的問題是一個XY problem的例子)是使用CardLayout,並簡單地通過這種佈局交換組件。

4

看一看Removeall()方法

從此容器中移除所有組件。此方法還會通知佈局管理器通過removeLayoutComponent方法從此容器的佈局中移除組件。