卡布局面板显示错误的面板 - Java Swing

时间:2015-05-20 22:16:00

标签: java swing panel cardlayout

我希望INIT_PANEL首先位于顶部,然后(稍后)单击按钮将其切换到GAME_PANEL。 但是,当我运行它时,GAME_PANEL是最顶级的......

我做错了什么?

以下是代码的重要部分:

public class MainFrame extends JFrame {

private JPanel contentPane;
private static final String GAME_PANEL = "Game panel";
private static final String INIT_PANEL = "Initial panel";

private void addPanels(){
    contentPane.add(new GamePanel(), GAME_PANEL);
    contentPane.add(new InitialPanel(this), INIT_PANEL);
    ((CardLayout) contentPane.getLayout()).show(contentPane, INIT_PANEL);
}

void switchPanels(){
    ((CardLayout) contentPane.getLayout()).next(contentPane);
}


public MainFrame(){
    ////////////////////////////resizing

    contentPane = new JPanel();
    contentPane.setLayout(new CardLayout(20,20));

    addPanels();

    ////////////////////////listener for closing
}
}

1 个答案:

答案 0 :(得分:1)

我没有在您提供的代码中解决您遇到的问题。为了实现这一点,我必须改变的一件事是添加内容窗格,该窗格从未添加:

public MainFrame(){
    ////////////////////////////resizing

    contentPane = new JPanel();
    contentPane.setLayout(new CardLayout(20,20));

    addPanels();

    this.add(this.contentPane); // I added this

    ////////////////////////listener for closing
}

那时它刚刚起作用。所以我的猜测是,如果这是从你的代码中删除的东西,你没有添加内容窗格,你在想的是游戏面板实际上正在其他地方呈现。这个假设是否正确?