当你使用Swing容器时JFrame时且布局是CardLayout时,当报出此错误时,说明在更换卡片时,直接对窗体进行了操作,而窗体是不能直接更换的,被跟换的是窗体中的JPanel,所以只需要在窗体的位置加上.getContentPane()即可解决问题。
例如:
CardLayout cl = new CardLayout(); //新建一个卡片式布局对象
this.setLayout(cl); //将窗体设置为卡片式布局
//cl.show(this,"2"); //错误示范
cl.show(this.getContentPane(),"2"); //正确示范