如何删除容器的所有子组件?

时间:2013-06-01 06:27:38

标签: java swing jpanel

我有一个JPanel的swing应用程序,它充当我的应用程序的视图端口。我希望我的应用程序在用户单击菜单项或按钮时删除视图端口内的所有组件,并在其中创建新组件。 我知道如何从容器中删除组件,目前还不清楚哪个组件在视口内,所以我想我不能使用下面的代码:

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

我的问题:

  1. 如何在不知道要删除哪个组件的情况下删除容器内的所有组件?

  2. 这种方法是删除所有组件并创建其他组件并将它们插入视口是否正确?

2 个答案:

答案 0 :(得分:7)

您问题的直接答案是只需在容器上调用removeAll()即可。更好的答案(因为我认为你的问题是XY problem的一个例子)是使用CardLayout并简单地通过这种布局交换组件。

答案 1 :(得分:4)

查看Removeall()方法

  

从此容器中删除所有组件。此方法还通知布局管理器通过removeLayoutComponent方法从此容器的布局中删除组件。