0

我的 CardLayout 显示方法有问题

所以我声明了我的 CardLayout 并将它应用到我的 JPanel

CardLayout cl = new CardLayout();
panel.setLayout(cl);

然后我在 CardLayout 中添加了 2 个面板

cl.addLayoutComponent(panel, "menuScreen");
cl.addLayoutComponent(panel1, "gameScreen");

然后我有一个 JButton,当被点击时,我会显示 gameScreen

public void mouseClicked(MouseEvent e) {
    if(e.getSource() ==  (startGame))

    scenechange.show(panel,"gameScreen");
}

唯一的问题是它没有进入我的游戏屏幕。它给了我一个 llegalArgumentException。它说“线程中的异常“AWT-EventQueue-0”java.lang.IllegalArgumentException:CardLayout 的父级错误”。

提前致谢

4

1 回答 1

3

你需要三个面板。父母和两张牌。

目前,您有“面板”作为父母和孩子之一。

CardLayout cl = new CardLayout();
panel.setLayout(cl);

cl.addLayoutComponent(panel, "menuScreen");

考虑Java trail中的这个代码示例

 ....
 //Create the "cards".
    JPanel card1 = new JPanel();
    card1.add(new JButton("Button 1"));

    JPanel card2 = new JPanel();
    card2.add(new JTextField("TextField", 20));

    //Create the panel that contains the "cards".
    cards = new JPanel(new CardLayout());
    cards.add(card1, BUTTONPANEL);
    cards.add(card2, TEXTPANEL);
于 2012-09-05T22:25:27.230 回答