請分析NullPointerException的產生原因?(付程序)
請深入分析一下其中的原因?謝謝
---------------------------------------------
import java.awt.*;
import java.awt.event.*;
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
public class TestButton{
private Frame f;
private Button b;
public TestButton(){
Frame f=new Frame("Test");
Button b=new Button("Press me");
b.addActionListener(new ButtonHandler());
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
public void launchFrame(){
}
public static void main(String []args){
TestButton guiApp=new TestButton();
//guiApp.launchFrame();
}
}//運行成功
-----------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
public class TestButton{
private Frame f;
private Button b;
public TestButton(){
Frame f=new Frame("Test");
Button b=new Button("Press me");
}
public void launchFrame(){
b.addActionListener(new ButtonHandler());
f.add(b,BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
public static void main(String []args){
TestButton guiApp=new TestButton();
guiApp.launchFrame();
}
}
/**Exception in thread "main" java.lang.NullPointerException
at TestButton.launchFrame(TestButton.java:18)
at TestButton.main(TestButton.java:25)
*/
问题点数:100、回复次数:8Top
1 楼SuperMMX(笑天子)回复于 2002-03-14 19:32:06 得分 20
呵呵, 在 TestButton 中定义的 Frame f 和 Button b 和在构造
函数中的不是一个.Top
2 楼wyboalone(wybo)回复于 2002-03-14 19:35:21 得分 0
沒明白,請詳細說說....Top
3 楼asiaec(星星是你看我的眼睛)回复于 2002-03-14 19:41:53 得分 20
Frame f 和 Button b
把F 和 B 的初始化拿到构造函数外面来Top
4 楼peacock_king(孔雀王)回复于 2002-03-14 19:53:31 得分 0
要改的部分如下(已经改过了):
public class TestButton{
private Frame f;
private Button b;
public TestButton(){
f=new Frame("Test");
b=new Button("Press me");
}
Top
5 楼peacock_king(孔雀王)回复于 2002-03-14 20:03:16 得分 60
因为你原来的写法,是在构造函数中定义并创建的f,b。
不会连变量定义与赋值都忘了吧?
你定义的private Frame f and Button b,并未在构造函数里用到,也就是没有为它们创建对象。
在构造函数中,你又定义了一个新的f,并且初始化了。
而你创建的f,b只适用于TestButton()本身,是局部的,并且覆盖全局的f与b。
Top
6 楼xhh(霹雳游侠)回复于 2002-03-14 20:05:58 得分 0
同意楼上!
好粗心啊~~
呵呵~~Top
7 楼udoo(udoo)回复于 2002-03-14 21:38:20 得分 0
建议贴代码时加上缩进Top
8 楼wyboalone(wybo)回复于 2002-03-15 06:51:22 得分 0
谢谢Top




