如何解决Exception in thread "main" java.lang.NullPointerException

qq_31987003 2016-04-02 03:09:13
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.*;
public class awt {
public static void main(String[] args){
new frame1("aaa");
// fa.Init();
// fa.rigisteraction();
}
}
class frame1 extends Frame{
public frame1(String title){
super(title);
// this.setTitle(title);
Init();
rigisteraction();

}
private FlowLayout flowlout=null;
private CardLayout card_lout=null;
private Panel flowpanel=null;
private Panel cardpanel=null;
private Button button1=null;
private Button button2=null;
private Button button3=null;
private Button button4=null;
private Label label1=null;
private Label label2=null;
private Label label3=null;
private Label label4=null;
private TextField label5=null;

public void Init(){
card_lout=new CardLayout();
flowlout=new FlowLayout(FlowLayout.LEFT,20,20);
cardpanel=new Panel();
flowpanel=new Panel();
Button button1=new Button("first");
Button button2=new Button("next");
Button button3=new Button("previous");
Button button4=new Button("final");
label1=new Label("first picture",Label.CENTER);
label2=new Label("two picture",Label.CENTER);
label3=new Label("three picture",Label.CENTER);
label4=new Label("four picture",Label.CENTER);
TextField label5=new TextField();
cardpanel.setBackground(Color.red);
flowpanel.add(button1);
flowpanel.add(button2);
flowpanel.add(button3);
flowpanel.add(button4);
flowpanel.setLayout(flowlout);
cardpanel.setLayout(card_lout);
cardpanel.add(label1);
cardpanel.add(label2);
cardpanel.add(label3);
cardpanel.add(label4);
cardpanel.add(label5);
this.add( flowpanel,BorderLayout.SOUTH);
this.add( cardpanel,BorderLayout.CENTER);
this.setVisible(true);
flowpanel.add(button1);
this.setBounds(100,100,300,300);
this.setBackground(Color.yellow);

}
public void rigisteraction(){
liaction act=new liaction();
//给4个按钮注册监听同一个事件监听器
button1.addActionListener(act);
button2.addActionListener(act);
button3.addActionListener(act);
button4.addActionListener(act);


}
class liaction implements ActionListener{


@Override
public void actionPerformed(ActionEvent e) {
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
/* System.out.println(e.getActionCommand());
System.out.println(e.getSource());*/
Object obj=e.getSource();
if(obj==button1)
card_lout.first(cardpanel);
else if(obj==button2)
card_lout.next(cardpanel);
else if(obj==button3)
card_lout.previous(cardpanel);
else
card_lout.last(cardpanel);
}
}

}
这个程序想测试一个事件监听器的功能,当按下一个键,然后图片翻页。
编译的时候没有错误,运行时有显示界面,但又弹出错误Exception in thread "main" java.lang.NullPointerException
at zhizhuobiao2.frame1.rigisteraction(awt.java:100) button1.addActionListener(act);
at zhizhuobiao2.frame1.<init>(awt.java:47) rigisteraction();
at zhizhuobiao2.awt.main(awt.java:37) new frame1("aaa");
...全文
1692 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Exception in thread "main" java.lang.NullPointerException button1.addActionListener(act);这行是空说明button1是空的。 你初始化错了 Button button1=new Button("first");你这么写等于是声明了一个局部变量 而成员变量里的 private Button button1=null;其实还是空的,这样你在rigisteraction里用自然是空的 如果你要给成员变量赋值。 Button button1=new Button("first"); 把红色的部分去掉就行了,其他的对象跟这个一样。 最后是重点,记得结贴!

58,454

社区成员

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

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