在JFrame中切换JPanel并返回

时间:2012-07-03 08:07:43

标签: java swing layout jpanel layout-manager

我使用以下方法点击按钮点击新JPanel

JPanel newP = new ProjectPage();
contentPane.revalidate(); 
setContentPane(newP);

ProjectPage的位置:

 public class ProjectPage extends JPanel

但是我如何在我的新ProjectPage课程中创建按钮,将我带回原来的面板?

我的主要屏幕类声明如下:

public class MainScreen extends JFrame 

2 个答案:

答案 0 :(得分:4)

使用CardLayout,如图here所示。

Game view High Scores view

有关详细信息,请参阅How to Use CardLayout

作为更一般的建议,不要延伸JPanelJFrame,而只是保留对它们的引用&根据每次使用需要构建它们。这个问题的一部分似乎是范围 - 相关的面板对调用代码不是“可见的”。在主类中保持对它们的引用是一个简单的解决方案。

答案 1 :(得分:2)

如果你想回到原来的JPanel,你必须通过添加一个字段private JPanel oldPanel;

在你班级的某处继续引用它。

创建新面板时,请获取旧面板并将其保存在该字段中,如:

oldPanel = getContentPane();
JPanel newP = new ProjectPage();
contentPane.revalidate(); 
setContentPane(newP);

如果您想返回原始面板,请执行以下操作:

setContentPane(oldPanel);