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

标签 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
}
}

最佳答案

我认为您遇到的问题不在提供的代码中。为了使其正常工作,我必须更改的一件事是添加内容 Pane ,该 Pane 从未添加过:

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

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

    addPanels();

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

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

那时它才刚刚开始工作。所以我的猜测是,如果这是从您的代码中直接删除的内容,那么您没有添加内容 Pane ,并且您认为游戏面板实际上是在其他地方呈现的。这个假设正确吗?

关于java - 卡片布局面板显示错误面板 - Java Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30361312/

相关文章:

java - 正确对齐面板与背景?

Java:将标签标识符作为字符串传递

java - 在 Java 上传递 MATLAB 对象作为输入参数

java - 如何在 JPanel 中为长 JComponent 添加滚动条?如何使 JComponent 居中?

java - 在 JTree 中单击关键节点时从属性文件中检索值

java - 使用 JFileChooser() 和 JButton() 重命名文件/目录

Java 复选框操作

java - 在 java 中比较两个 ArrayLists 时出错

java - 将 Spring Security 与 OpenID 一起使用时出现 AccessControlException

java - Retrofit2在jvm上抛出Android相关的RuntimeException