我正在动态地向 JPanel
中添加和删除组件。添加和删除功能都正常工作,但是当我删除组件时,它会删除最后一个组件而不是要删除的组件。
我该如何解决这个问题?
有趣的是,我碰到了同样的问题,并且惊讶地发现人们正在为另一个答案点赞,因为他明显在询问动态创建组件的问题,而不是已经创建好并可以通过变量名获取的组件,也不是匿名创建的对象。
答案很简单。使用getComponents()遍历添加到JPanel中的组件数组。例如,可以使用instanceof找到要删除的组件类型。在我的例子中,我移除了添加到我的JPanel中的任何JCheckBoxes。
Component来自于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();
通过使用方法 Container.remove(Component)
,您可以从容器中移除任何组件。例如:
JPanel j = new JPanel();
JButton btn1 = new JButton();
JButton btn2 = new JButton();
j.add(btn1);
j.add(btn2);
j.remove(btn1);
CardLayout
- 如果您有一组需要在不同时间显示的组件,则可以使生活更加轻松。 感谢 @Andrew 提醒我。 - Paul