1

这是我尝试过的:

将一些 JPanel 拖到 JFrame 上(使用 NetBeans 检查器窗口)。

在 JFrame 构造函数中,使用 使所有 JPanel 不可见.setVisible(false),除了我想首先显示的那个。

.setVisible(false)它可以工作,我可以通过使用一些带有 actionPerformed 的按钮并添加到当前卡片和.setVisible(true)我想要查看的卡片轻松地从一个到另一个。

我现在想做的是使用 CardLayoutprevious()next(),类似于浏览器的后退/前进。我也想从不同的地方访问一个面板,即两个面板可以链接到同一个面板,所以前一个面板并不总是相同的。

我尝试在 JFrame 类的 actionPerformed 中使用以下代码:

CardLayout cardLayout = (CardLayout) this.getLayout();
cardLayout.previous(this);

但是,它不起作用。我错过了什么?这应该做我正在寻找的吗?

4

2 回答 2

3

由于您已经设置了JFrameto的布局,因此在使用&方法CardLayout时需要使用父容器。父容器是内容窗格。所以改变:next()previous()JFrame

cardLayout.previous(this);

cardLayout.previous(getContentPane());
于 2012-11-14T01:12:43.227 回答
1

String previousCard在 JPanel 中声明一个变量。当您从 CardA 转到 CardB 时,将previousCard变量设置为“CardA”或任何卡的名称。因此,在为从一张卡到另一张卡的所有转换设置此设置后,后退按钮将始终执行相同的操作。

cardLayouot.show(getContentPane(), previousCard);
于 2013-12-10T13:38:13.297 回答