从 JPanel 中动态删除组件

2022-09-03 04:54:29

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

我该如何解决这个问题?


答案 1

有趣的是,我遇到了同样的问题,我很惊讶人们正在投票支持另一个答案,因为他显然是在问动态创建的组件,而不是已经以可获取的变量名称创建的组件,而不是匿名创建的对象。

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

确保重新验证并重新绘制面板,否则更改将不会出现

组件来自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();

答案 2

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

JPanel j = new JPanel();

JButton btn1 = new JButton();

JButton btn2 = new JButton();

j.add(btn1);

j.add(btn2);

j.remove(btn1);

推荐