以下是我的尝试:
将一些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);
然而,它不起作用。我错过了什么?这应该是我正在寻找的吗?
答案 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);