首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - CardLayout show() IllegalArgumentException

Java - CardLayout show() IllegalArgumentException
EN

Stack Overflow用户
提问于 2012-09-06 06:21:00
回答 1查看 4.1K关注 0票数 0

我有一个关于CardLayout显示方法的问题

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

代码语言:javascript
复制
CardLayout cl = new CardLayout();
panel.setLayout(cl);

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

代码语言:javascript
复制
cl.addLayoutComponent(panel, "menuScreen");
cl.addLayoutComponent(panel1, "gameScreen");

然后,我有一个JButton,当单击它时,我会显示该gameScreen

代码语言:javascript
复制
public void mouseClicked(MouseEvent e) {
    if(e.getSource() ==  (startGame))

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

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

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-06 06:25:27

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

当前,您有"panel“作为父级和子级之一。

代码语言:javascript
复制
CardLayout cl = new CardLayout();
panel.setLayout(cl);

代码语言:javascript
复制
cl.addLayoutComponent(panel, "menuScreen");

考虑Java trail中的以下代码示例

代码语言:javascript
复制
 ....
 //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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12290609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档