我做了如下的测试,完全可以
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JFrame;
public class Test1 extends JPanel{
public Test1(){
this.add(new JLabel("This is inside"));
}
public static void main(String[] args){
JFrame frame = new JFrame();
Test1 test = new Test1();

frame.getContentPane().add(test);
test.add(new JLabel("This is outside"));
frame.show();
}
};

解决方案 »

  1.   

    public void MyPanel() {
    this.add(new Label("Label Inside"));
    }
    去掉void,
      

  2.   

    真的,去掉void就可以了,谁能告诉我为什么呢?!!!不明白呀!只是一个可有可无的返回值类型啊,这怎么会对结果有影响呢?!!
    谢谢楼上的二位!!
      

  3.   

    去掉以后他是一个构造方法当执行
    MyPanel mp = new MyPanel();
    就会执行this.add(new Label("Label Inside"));不去掉时他是一个方法,需要调用才能执行.
      

  4.   

    这真是一个隐蔽的陷阱啊
    不小心还真的挺难发现的!
    java设计这样也真算是一个缺陷啊,如果c+里这样做早编译器应该已经报错了吧。
    谢谢楼上的大哥,结帐!