CardLayout - 如何使用NetBeans GUI Builder使用previous()和next()?

时间:2012-11-14 00:28:13

标签: java swing user-interface netbeans cardlayout

以下是我的尝试:

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

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

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

我现在要做的是使用CardLayout previous()next(),类似于浏览器的后退/前进。我也希望从不同的地方到达一个小组,即两个小组可以链接到同一个小组,所以前面的小组不会总是相同。

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

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

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

2 个答案:

答案 0 :(得分:3)

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

cardLayout.previous(this);

cardLayout.previous(getContentPane());

答案 1 :(得分:1)

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

cardLayouot.show(getContentPane(), previousCard);