如何交换两个Java JPanel 的内容

3
我想切换JPanel的内容。假设我有JPanel1和JPanel2,我希望将JPanel1的内容更改为JPanel2,并将JPanel2的内容更改为JPanel1。这些面板具有完全不同的内容,因此我无法更改JPanel和所有元素的属性,而只能进行切换。如下图所示: enter image description here
void switchPanels (){
Content c1=jPanel1.getContent();
jPanel1.setContent(jPanel2.getContent());
jPanel2.setContent(c1);
}

我知道上面的代码无法工作。我想知道如何实现它。

2
使用CardLayout,如此示例所示。 - Andrew Thompson
或者重新排列容器中的组件,将它们放在一个列表(JList)中,该列表允许拖放重新排序。 - Andrew Thompson
1
@AndrewThompson 但我想要两个都看到。例如在这种情况下,我想将黄色面板内容添加到绿色面板中,也将绿色面板内容添加到黄色面板中。 - Piumi Wandana
3
为什么不交换 JPanel 本身的位置,而是交换它们的内容? - predi
2
因此使用JList来显示面板1和2。还可以参考基于JList拖放入门教程 - Andrew Thompson
1个回答

3

不用添加两个面板并切换它们的内容,我会将它们放置在另一个带有边界布局(CENTER)的JPanel容器中。要交换它们,只需要从container1中删除第一个面板并添加到container2中即可。

JPanel container1=new JPanel();
container1.setLayout(new BorderLayout());
container1.add(thepanel1);
JPanel container2=new JPanel();
container2.setLayout(new BorderLayout());
container2.add(thepanel2);

public void swap() {
  container2.add(thepanel1);
  container1.add(thepanel2);
  revalidate();
  repaint();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接