CardLayout在更新信息时删除旧面板

时间:2013-12-14 02:41:00

标签: java swing

我正在利用CardLayout在两个窗口之间切换。第一个窗口显示信息,第二个窗口编辑信息并保存。我每次点击编辑或保存时,我更新信息的方式是创建一个新的JPanel。但是,我想删除已创建的旧面板。我一直在尝试

containerPanel.remove(0), 

以及

 Component c = containerPanel.getComponent(0)
 cardlayout.removeLayoutComponent(c); 

但是当我遍历jpanel并检查有多少组件时似乎没有任何效果。这让我很长时间感到沮丧,我真的被困住了。

1 个答案:

答案 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.