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

Mus*_*aie 6 java swing jpanel

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

viewport.remove(component);
viewport.revalidate();
viewport.repaint();
Run Code Online (Sandbox Code Playgroud)

我的问题:

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

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

Hov*_*els 7

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