Java – CardLayout show()IllegalArgumentException

我有一个CardLayout show方法的问题

所以我宣布我的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"); } 

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

提前致谢

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

目前你有“panel”作为父母和一个孩子。

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

 cl.addLayoutComponent(panel, "menuScreen"); 

考虑来自Java跟踪的此代码示例

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