一个简单的gui程序报错

huangjcjava 2008-12-16 09:25:25
import java.awt.*;
public class Comp1{
public static void main (String args[]){
Button b1=new Button("test1");
Button b2=new Button("test2");
Frame f = new Frame("test");
Panel p = new Panel();
p.add(b1);
p.add(p);
f.pack();
f.setVisible(true);
}
}
报的错是:
Exception in thread "main" java.lang.IllegalArgumentException: adding container
s parent to itself
at java.awt.Container.addImpl(Container.java:1017)
at java.awt.Container.add(Container.java:352)
at Comp1.main(Comp1.java:9)
各位帮忙看下,谢了!
...全文
133 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lichujing 2008-12-31
  • 打赏
  • 举报
回复
顶一个,这么简单的错误发上来,不是想睢不上人家吗
lichujing 2008-12-31
  • 打赏
  • 举报
回复
顶一个,这么简单的错误发上来,不是想睢不上人家吗
闲人のMr丶Wu 2008-12-30
  • 打赏
  • 举报
回复
你没有把中间容器Panel加到顶级容器Frame中,正确的应该是:
import java.awt.*;
public class Comp1{
public static void main (String args[]){
Button b1=new Button("test1");
Button b2=new Button("test2");
Frame f = new Frame("test");
Panel p = new Panel();
p.add(b1);
f.getContentPanel().add(p); //这里将Panel加到顶级容器中
f.pack();
f.setVisible(true);
}
}
Friend_NO1 2008-12-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wuyashuan 的回复:]
你没有把中间容器Panel加到顶级容器Frame中,正确的应该是:
import java.awt.*;
public class Comp1{
public static void main (String args[]){
Button b1=new Button("test1");
Button b2=new Button("test2");
Frame f = new Frame("test");
Panel p = new Panel();
p.add(b1);
f.getContentPanel().add(p); //这里将Panel加到顶级容器中
f.pack();
f.setVisible(true);
}
}
[/Quote]
正解
Efence 2008-12-26
  • 打赏
  • 举报
回复
是应该把p.add(p)改成f.add(p)哦,注意点哈
wap21 2008-12-23
  • 打赏
  • 举报
回复
帮顶
elevationkaiserk 2008-12-23
  • 打赏
  • 举报
回复
import java.awt.*;
public class Comp1{
public static void main (String args[]){
Button b1=new Button("test1");
Button b2=new Button("test2");
Frame f = new Frame("test");
Panel p = new Panel();
p.add(b1);
f.getContentPanel().add(p);
f.pack();
f.setVisible(true);
}
}

这样才对
ccc_moriya 2008-12-22
  • 打赏
  • 举报
回复
一看报错那段话就知道什么意思啦。。
lbh6034693 2008-12-20
  • 打赏
  • 举报
回复
Panel p = new Panel();
p.add(b1);
p.add(b2);
f.add(p);
f.pack();
f.setVisible(true);
这是你的本意吧?
shmilycharlene 2008-12-19
  • 打赏
  • 举报
回复
自己把自己背上,你试试给我看。。。。。。
askar 2008-12-18
  • 打赏
  • 举报
回复
把p.add(p);改成
f.add(p);
csgdseed 2008-12-18
  • 打赏
  • 举报
回复
p.add(p);
若凹 2008-12-17
  • 打赏
  • 举报
回复
p.add(p);
myjava_024 2008-12-17
  • 打赏
  • 举报
回复
学习啦
gongfuliang 2008-12-16
  • 打赏
  • 举报
回复
p.add(p);

岂不是把自身加到自身上面?!

应该是getContentPanel().add(p);吧
chenkangwan 2008-12-16
  • 打赏
  • 举报
回复
红色那里很奇怪!!!

Panel p = new Panel();
p.add(b1);
p.add(p);
f.pack();

62,615

社区成员

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

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