大菜鸟求助

chiruchiru 2011-03-15 06:00:04
执行时出错
E:\JavaWork>javac CardTest.java

E:\JavaWork>java CardTest
Exception in thread "main" java.lang.IllegalArgumentException: wrong parent for
CardLayout
at java.awt.CardLayout.checkLayout(CardLayout.java:384)
at java.awt.CardLayout.show(CardLayout.java:506)
at CardTest.init(CardTest.java:50)
at CardTest.main(CardTest.java:15)


源代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class CardTest extends MouseAdapter
{
Panel p1,p2,p3,p4,p5;
Label l1,l2,l3,l4,l5;

CardLayout myCard;
JFrame f;
public static void main (String args[])
{
CardTest ct=new CardTest();
ct.init();
}
public void init()
{
f=new JFrame("Card Test");

myCard=new CardLayout();
f.setLayout(myCard);
p1=new Panel();
p2=new Panel();
p3=new Panel();
p4=new Panel();
p5=new Panel();
l1=new Label("This is the first Panel");
p1.add(l1); p1.setBackground(Color.yellow);
l2=new Label("This is the second Panel");
p2.add(l2);p2.setBackground(Color.green);
l3=new Label("This is the third Panel");
p3.add(l3);p3.setBackground(Color.magenta);
l4=new Label("This is the fourth Panel");
p4.add(l4);p4.setBackground(Color.white);
l5=new Label("This is the fifth Panel");
p5.add(l5);p5.setBackground(Color.cyan);
p1.addMouseListener(this);
p2.addMouseListener(this);
p3.addMouseListener(this);
p4.addMouseListener(this);
p5.addMouseListener(this);

f.add(p1,"First");
f.add(p2,"Second");
f.add(p3,"Third");
f.add(p4,"Fourth");
f.add(p5,"Fifth");

myCard.show(f,"First");
f.setSize(300,200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void mouseClicked(MouseEvent e)
{
myCard.next(f);
}
}

如果把JFrame改成Frame 再把f.setDefaultClosseOperation(JFrame.EXIT_ON_CLOSE);这行删了就能执行了
为什么
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chiruchiru 2011-03-15
  • 打赏
  • 举报
回复
谢谢 很详细 分全给你了
mickysky 2011-03-15
  • 打赏
  • 举报
回复
myCard.next(f);同样的这个也要改!先得到ContentPane
mickysky 2011-03-15
  • 打赏
  • 举报
回复

myCard.show(f,"First");
改成
myCard.show(f.getContentPane(),"First");


因为JFrame有一个默认的container,JFrame是没有同位体的。
必须得到JFrame的container,可以用.getContentPane()方法来获得,也可以用.setContentPane(Container)来设置。
resource:
http://zhidao.baidu.com/question/147187323
chiruchiru 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yewuqing007 的回复:]
CardTest ct=new CardTest();
这个??
[/Quote]
创建个ct对象 没问题啊
devin_jia 2011-03-15
  • 打赏
  • 举报
回复
CardTest ct=new CardTest();
这个??
花非花卍 2011-03-15
  • 打赏
  • 举报
回复
大牛在晚上上线的多,我是新手,所以爱莫能助了,但是帮你顶一下了!祝你好运

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧