我有一个框架和许多面板。我没有使用CardLayout
,所以我不想要那个答案。我使用的逻辑是:
gpanel3.setVisible(false);
gpanel.setVisible(true);
f.add(gpanel);
当我从第一个面板转到第二个面板时,这是有效的。但是当我从第二个面板转到第三个面板时,它不起作用。面板通过框架中的构造函数传递给类。
答案 0 :(得分:0)
CardLayout
是一个很棒的布局,但对我来说不利:你必须先创建JPanel
s并将它们添加到你的卡片中。如果您的面板太多,那么这就是一个问题,因此您可以在飞行中创建面板。
通常,我会这样做。
public void changePanel(JPanel panel) {
removeAll();
add(panel);
revalidate();
repaint();
}
如果要实现后退\前向导航,请创建List
JPanel
,每次用户更改面板将JPanel推入列表并增加特定索引。因此,您可以撤消调用
changePanel(list_panels.get(index_to_show));