黑马程序员技术交流社区
标题:
异常排查
[打印本页]
作者:
胥文
时间:
2013-2-2 11:17
标题:
异常排查
本帖最后由 张向辉 于 2013-2-4 21:42 编辑
package cn.itcast.day1;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;
public class MyQQ {
/**
* @param args
*/
private Frame f;
private TextArea ta1,ta2;
private Button cancelBut,sendBut;
MyQQ()
{
init();
}
public void init()
{
f= new Frame("my qq");
ta1 = new TextArea(12,65);
ta2 = new TextArea(12,65);
Button cancelBut = new Button("取消");
Button sendBut = new Button("发送");
f.setBounds(200, 100, 500, 550);
f.setLayout(new FlowLayout());
f.add(ta1);
f.add(ta2);
f.add(cancelBut);
f.add(sendBut);
myEvent();
f.setVisible(true);
}
public void myEvent()
{
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
cancelBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
f.setVisible(false);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyQQ();
}
}
结果是:Exception in thread "main" java.lang.NullPointerException
at cn.itcast.day1.MyQQ.myEvent(MyQQ.java:54)
at cn.itcast.day1.MyQQ.init(MyQQ.java:40)
at cn.itcast.day1.MyQQ.<init>(MyQQ.java:22)
at cn.itcast.day1.MyQQ.main(MyQQ.java:63)
感觉代码正常,就是有异常,但是又不知道怎么解决
很烦躁
希望能给点这方面排场异常的经验
作者:
杨杨
时间:
2013-2-2 11:54
cancelBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
f.setVisible(false);
}
});
}有问题
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
f.setVisible(true);
}
});
new ActionListener(){} 这只是一个接口 接口不能被实例化 ,必须有对应的类你可以用他的子类 ,
对awt这块内容不是太清楚只能帮到你这里了
作者:
黄锦成
时间:
2013-2-2 12:21
标题:
那个
本帖最后由 黄锦成 于 2013-2-2 12:22 编辑
你在MyQQ中定义了两个成员变量private Button cancelBut,sendBut; 此时他俩的默认值为null
你又在init中定义了同名的局部变量,如下面所示,
Button cancelBut = new Button("取消");
Button sendBut = new Button("发送");
这导致了cancelBut,sendBut这两个成员变量没有指向,还是null,你在myEvent中调用了这两个变量,所以就出现了空指针异常。
解决办法:你把
Button cancelBut = new Button("取消");
Button sendBut = new Button("发送");
改为
cancelBut = new Button("取消");
sendBut = new Button("发送");
即可
建议你用eclipse工具时,要学会调试
作者:
苏克
时间:
2013-2-2 15:03
Button cancelBut = new Button("取消");
Button sendBut = new Button("发送");
这样写,相当于按钮是方法里面的,
cancelBut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
f.setVisible(false);
}
你这里监听的是类里面的,而类里面的你没有创建实例对象,所以监听就会报空指针异常,也就是监听器没有找到要监听的对象。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2