从JPanel动态删除Component

我在JPanel动态添加和删除组件。 添加和删​​除function工作正常,但是当我删除组件时,它会删除最后一个组件而不是要删除的组件。

我该如何解决这个问题?

使用方法Container.remove(Component) ,您可以从容器中删除任何组件。 例如:

 JPanel j = new JPanel(); JButton btn1 = new JButton(); JButton btn2 = new JButton(); j.add(btn1); j.add(btn2); j.remove(btn1); 

有趣的是,我遇到了同样的问题,我很惊讶人们正在提出另一个答案,因为他明确地询问动态创建的组件,而不是已经在可获得的变量名下创建的组件,而不是匿名创建的对象。

答案很简单。 使用getComponents()迭代添加到JPanel的组件数组。 例如,使用instanceof查找要删除的组件类型。 在我的示例中,我删除了添加到JPanel的任何JCheckBox。

确保重新validation并重新绘制面板,否则不会显示更改

组件来自java.awt.Component。

 //Get the components in the panel Component[] componentList = panelName.getComponents(); //Loop through the components for(Component c : componentList){ //Find the components you want to remove if(c instanceof JCheckBox){ //Remove it clientPanel.remove(c); } } //IMPORTANT panelName.revalidate(); panelName.repaint();