Java - CardLayout show() IllegalArgumentException

标签 java awt layout-manager illegalargumentexception cardlayout

我的 CardLayout 显示方法有问题

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

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

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

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

然后我有一个 JButton,单击它时,我会显示游戏屏幕

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

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

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

提前致谢

最佳答案

您需要三个面板。家长和两张卡。

目前,您有“panel”作为父级和子级之一。

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);

关于Java - CardLayout show() IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12290609/

相关文章:

java - BoxLayout 添加左边距

java - 在文件上传时信任 "Content-Type"

java - 我在使用 Serialized 时犯了一个很大的错误。怎么修?

Java Toolkit 屏幕分辨率偏差

java - 使用java小程序10张牌洗牌器显示图像有错误:(

java - 具有可折叠 JPanel 的容器的首选布局管理器是什么

java - 是否可以构建相同的 GridBagLayout 界面但不使用额外的 JPanel 作为容器?

java - 使用set Object()代替jdbc中的所有数据类型

java - 将带有数据的 Java 代码打包到 .jar 中

Java小程序不会移动图像