【问题标题】:Card Layout Panel showing wrong panel - Java Swing卡片布局面板显示错误的面板 - Java Swing
【发布时间】:2015-05-20 22:16:00
【问题描述】:

我首先希望 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
}
}

【问题讨论】:

标签: java swing panel cardlayout


【解决方案1】:

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

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

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

    addPanels();

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

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

那时它只是工作。所以我的猜测是,如果这是从你的代码中截取的东西,你没有添加内容窗格,你认为游戏面板实际上是在其他地方呈现的。这个假设正确吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    相关资源
    最近更新 更多