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)
各位帮忙看下,谢了!

解决方案 »

  1.   

    红色那里很奇怪!!!Panel p = new Panel(); 
    p.add(b1); 
    p.add(p); 
    f.pack(); 
      

  2.   

    p.add(p); 岂不是把自身加到自身上面?!应该是getContentPanel().add(p);吧
      

  3.   

    Panel p = new Panel(); 
    p.add(b1); 
    p.add(b2);
    f.add(p); 
    f.pack(); 
    f.setVisible(true); 
    这是你的本意吧?
      

  4.   

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

    } 这样才对
      

  5.   

    是应该把p.add(p)改成f.add(p)哦,注意点哈
      

  6.   

    你没有把中间容器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);