我正在利用CardLayout在两个窗口之间切换。第一个窗口显示信息,第二个窗口编辑信息并保存。我每次点击编辑或保存时,我更新信息的方式是创建一个新的JPanel。但是,我想删除已创建的旧面板。我一直在尝试
containerPanel.remove(0),
以及
Component c = containerPanel.getComponent(0)
cardlayout.removeLayoutComponent(c);
但是当我遍历jpanel并检查有多少组件时似乎没有任何效果。这让我很长时间感到沮丧,我真的被困住了。
答案 0 :(得分:1)
初始化以后要删除的JPanel(或任何Component)时,使用变量存储对它的引用。然后,您就可以致电superComponent.remove(subComponent)
将其删除。如有必要,您可以继续该模式,将包含旧组件的变量设置为新组件。
例如:
JPanel containerPanel = new JPanel();
JPanel subPanel = new JPanel(); // Store a reference to the first panel.
containerPanel.add(subPanel);
containerPanel.remove(subPanel); // Remove the panel like so.
subPanel = new JPanel(); // Set subPanel to the new panel.
containerPanel.add(subPanel);
containerPanel.remove(subPanel); // Repeat as needed.