日期:2014-05-20  浏览次数:20793 次

初学者,遇到一个小麻烦,请各位帮帮我。。。。。。
import   java.awt.*;

public   class   demo1{

Frame   f;
Panel   p;
TextField   t;


public   static   void   main(String[]   args){

demo2   A   =   new   demo2();

A.setFrame();

new   demo2().diao();

}

public   void   setFrame(){

f   =   new   Frame( "测试 ");

p   =   new   Panel();

f.add(p);

t   =   new   TextField( "hao ");

p.add(t);

f.setVisible(true);


}
}

class   demo2   extends   demo1{


public   void   diao(){

String   s   =   t.getText();
System.out.println(s);

}


}


为什么会出现NullPointerException................如何修改呢?
希望各位能给我讲细点点,我是出学的,麻烦大家。。。谢谢。。。。。


------解决方案--------------------
t本來就是個null啊
------解决方案--------------------
class demo2 extends demo1{
public void diao() {
TextField t=new TextField();//加上这句....
String s = t.getText();
System.out.println(s);
}
}
另:写类的时候建议第一个字母大写。
------解决方案--------------------
blog 更新:
think in java 各章后练习答案.....
http://blog.csdn.net/heimaoxiaozi/

------解决方案--------------------
t = new TextField( "hao ");

得到初始值“hao”???? 可以得到吗????? 他不是可以打印出来的类型啊??

文本框打印不出来 他会认为你打印的对象是空对象
------解决方案--------------------
我也是刚入门,但还是帮你顶一下。
------解决方案--------------------
demo2 A = new demo2();
A.setFrame();
new demo2().diao();

第二个demo2实例中t未初始化
------解决方案--------------------
demo2 A = new demo2();
A.setFrame();
new demo2().diao();

第二个demo2实例中t未初始化

=================================
正解!
如果你是想调用第一个demo2中的方法,应该写成A.diao();
如果你是想在几个demo2的实例中共享t,应该把t定义为静态变量。