如何在不使用CardLayout的情况下在同一帧内从一个面板移动到另一个面板?

时间:2015-08-11 07:55:41

标签: java swing jframe jpanel

我有一个框架和许多面板。我没有使用CardLayout,所以我不想要那个答案。我使用的逻辑是:

gpanel3.setVisible(false);   
gpanel.setVisible(true);

f.add(gpanel);

当我从第一个面板转到第二个面板时,这是有效的。但是当我从第二个面板转到第三个面板时,它不起作用。面板通过框架中的构造函数传递给类。

1 个答案:

答案 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));