2

我正在JPanel使用以下方法打开按钮单击到新的:

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

在哪里ProjectPage

 public class ProjectPage extends JPanel

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

我的主屏幕类声明如下:

public class MainScreen extends JFrame 
4

2 回答 2

4

使用CardLayout ,如此所示。

游戏视图 高分视图

有关详细信息,请参阅如何使用 CardLayout

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

于 2012-07-03T08:19:10.120 回答
2

如果你想回到原来的 JPanel,你必须通过添加一个字段在你的类中的某个地方保留它的引用private JPanel oldPanel;

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

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

当您想返回原始面板时,您可以:

setContentPane(oldPanel);
于 2012-07-03T08:17:30.637 回答