Swing cardlayout wrong parent for CardLayout问题

最近在写一个Swing的东西,用到了cardlayout,但却在进行切换的时候出现了
 Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout 

的异常,看了一下代码,是将Jframe设为cardlayout的,但是在
cardLayout.show(this, "play");

的时候出现 wrong parent for Cardlayout,究竟是怎么回事呢?

然后我将代码改为

cardLayout.show(this.getContentPane(), "play");

就可以用了。

具体原理我也不清楚,但是我认为是跟Swing的结构有关,因为在Swing中 组件不是直接填加在Jframe上

先推荐看一个帖子Jframe的层次结构  Java 8 司马大婶写的,是个前辈,至少是我的前辈。

      Jframe中又个contentpanel,就是 满是组件的那个面板,add()方法添加的组件其实是添加到了contenpanel上,那么反过来说,组件的parent其实contentpanel。所以在上面会出现上面的问题。show()方法的说明

 void java.awt.CardLayout.show(Container parent, String name)


Flips to the component that was added to this layout with the specified name, using addLayoutComponent. If no such component exists, then nothing happens.

Parameters:
parent the parent container in which to do the layout
name the component name
See Also:
java.awt.CardLayout.addLayoutComponent(java.awt.Component, java.lang.Object)

第一个参数是响应布局的父容器。


因为Swing的层次结构是这样,所以出现了wrong parent的问题。


以上纯属个人的理解与看法,有任何不对的地方还请指出,多谢。小弟不胜感激~~

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值