为什么可以通过编译却不能运行?

sk811229 2011-03-23 10:40:07
最近我在学 awt 找了个例子,当我编译的时候能够通过,运行的时候却不行了。

想求教下到底是怎么回事,下面是我的源代码:

//EventTest.java
import java.awt.*;
import java.awt.event.*;
public class EventTest implements ActionListener,WindowListener
{
Frame f;
Button b;
public EventTest()
{
f = new Frame("testing");
b = new Button("press");
b.addActionListener(this);
f.addWindowListener(this);
f.add(b,"North");
f.setSize(200,200);
f.setVisible(true);
}
//实现接口中所有的方法
public void actionPerformed(ActionEvent e){}
{
b.setLabel("I have been pressed");
}

//public void WindowDeiconified(WindowEvent e){}

public void windowActivated(WindowEvent e){};
public void windowClosed(WindowEvent e){};
public void windowClosing(WindowEvent e){System.exit(1);};
public void windowDeactivated(WindowEvent e){};
public void windowDeiconified(WindowEvent e){};
public void windowIconified(WindowEvent e){};
public void windowOpened(WindowEvent e){};

public static void main(String[] args)throws Exception
{
EventTest et = new EventTest();
}

}
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
JamesLiu 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zsq_kaka1 的回复:]
引用 2 楼 followme_1987 的回复:
public void actionPerformed(ActionEvent e){}
{
b.setLabel("I have been pressed");
}
楼主仔细看看你这个代码,呵呵{}的问题

楼上正解,多出了一个{},所以会发生空指针错误,还有一个小小的建议,楼主在关闭窗口监听事件上用了接口实现,这样就需要把他的其……
[/Quote]

正解,此分必给2、5楼
Ganymede 2011-03-23
  • 打赏
  • 举报
回复
public void actionPerformed(ActionEvent e){}
{
b.setLabel("I have been pressed");
}
楼主仔细看看你这个代码,呵呵{}的问题
yaganblw 2011-03-23
  • 打赏
  • 举报
回复
我运行的时候报错了
Exception in thread "main" java.lang.NullPointerException
at EventTest.<init>(EventTest.java:20)
at EventTest.main(EventTest.java:35)
suntingtingonly 2011-03-23
  • 打赏
  • 举报
回复
看看。。。
lost_guy_in_scut 2011-03-23
  • 打赏
  • 举报
回复
空指针~
yaganblw 2011-03-23
  • 打赏
  • 举报
回复
空指针,如四楼所说
蒙奇D路飞 2011-03-23
  • 打赏
  • 举报
回复
楼主不要粗心大意啊
zsq_kaka1 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 followme_1987 的回复:]
public void actionPerformed(ActionEvent e){}
{
b.setLabel("I have been pressed");
}
楼主仔细看看你这个代码,呵呵{}的问题
[/Quote]
楼上正解,多出了一个{},所以会发生空指针错误,还有一个小小的建议,楼主在关闭窗口监听事件上用了接口实现,这样就需要把他的其他方法框架都放进去,比较麻烦,不如改动一下,代码如下:

//把这段代码加到构造函数里面
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

最后变成:

import java.awt.*;
import java.awt.event.*;
public class EventTest implements ActionListener{
Frame f;
Button b;
public EventTest(){
f = new Frame("testing");
b = new Button("press");
b.addActionListener(this);
f.add(b,"North");
f.setSize(200,200);
f.setVisible(true);

f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
//实现接口中所有的方法
public void actionPerformed(ActionEvent e){
b.setLabel("I have been pressed");
}
public static void main(String[] args)throws Exception{
EventTest et = new EventTest();
}
}

游一游走一走 2011-03-23
  • 打赏
  • 举报
回复
public void actionPerformed(ActionEvent e){}
{
b.setLabel("I have been pressed");
}
b这个对象只定义,但没初始化,所有报空指针异常
sk811229 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yaganblw 的回复:]

我运行的时候报错了
Exception in thread "main" java.lang.NullPointerException
at EventTest.<init>(EventTest.java:20)
at EventTest.main(EventTest.java:35)
[/Quote]


这是什么意思啊?

62,614

社区成员

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

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