有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个框架和许多面板。我没有使用CardLayout,所以我不想得到关于这个问题的答案。我使用的逻辑是:

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

f.add(gpanel);

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


共 (1) 个答案

  1. # 1 楼答案

    CardLayout是一个很好的布局,但对我来说有一个缺点:你必须在之前创建JPanel并将它们添加到你的“卡片”中。这是一个问题,如果你的面板太多,所以你会创建你的面板“在飞行”

    通常,我会做这样的事情

    public void changePanel(JPanel panel) {
        removeAll();
        add(panel);
        revalidate();
        repaint();
    }
    

    如果你想实现一个前向导航,创建一个ListJPanel,每次用户更改面板都会将JPanel推到你的列表中,并增加一个特定的索引。因此,您可以撤消视图调用

    changePanel(list_panels.get(index_to_show));