以下是我的源程序
import java.awt.*;
import java.awt.event.*;
public class AddressList extends WindowAdapter implements ActionListener,ItemListener
{
Frame f;
TextField tf1,tf2,tf3,tf4,tf5,tf6,tf7;
Label t1,t2,t3,t4,t5,t6;
List ls1;
Button b1,b2,b3;
private Panel p1;
private Panel p2;
private Panel p3;
private Panel p4;
private Panel p5;
private Panel p6;
private Panel p7;
private Panel p8;
public void display()
{
Frame f = new Frame("AddressList");
f.setSize(400,380);
f.setBackground(Color.lightGray);
f.setLocation(200,200);
f.setLayout(new GridLayout(2,1));
ls1 = new List();
f.add(ls1);
p1 = new Panel();
p1.setLayout(new GridLayout(8,1));
f.add(p1);
TextField tf1 = new TextField("1");
Label t1 = new Label("name");
TextField tf2 = new TextField("      ");
Label t2 = new Label("birthday");
TextField tf3 = new TextField("         ");
Label t3 = new Label("phoneNumber");
TextField tf4 = new TextField("          ");
Label t4 = new Label("homeAddress");
TextField tf5 = new TextField("             ");
Label t5 = new Label("QQ");
TextField tf6 = new TextField("         ");
Label t6 = new Label("email");
TextField tf7 = new TextField("          ");
b1 = new Button("Add");
b1.addActionListener(this);
b2 = new Button("query");
b2.addActionListener(this);
b3 = new Button("delete");
b3.addActionListener(this);
p2 = new Panel();
p2.setLayout(new FlowLayout(FlowLayout.LEFT));
p3 = new Panel();
p3.setLayout(new FlowLayout(FlowLayout.LEFT));
p4 = new Panel();
p4.setLayout(new FlowLayout(FlowLayout.LEFT));
p5 = new Panel();
p5.setLayout(new FlowLayout(FlowLayout.LEFT));
p6 = new Panel();
p6.setLayout(new FlowLayout(FlowLayout.LEFT));
p7 = new Panel();
p7.setLayout(new FlowLayout(FlowLayout.LEFT));
p8 = new Panel();
p8.setLayout(new FlowLayout(FlowLayout.LEFT));
p2.add(tf1);
p2.add(t1);
p2.add(tf2);
p3.add(t2);
p3.add(tf3);
p4.add(t3);
p4.add(tf4);
p5.add(t4);
p5.add(tf5);
p6.add(t5);
p6.add(tf6);
p7.add(t6);
p7.add(tf7);
p8.add(b1);
p8.add(b2);
p8.add(b3);
p1.add(p2);
p1.add(p3);
p1.add(p4);
p1.add(p5);
p1.add(p6);
p1.add(p7);
p1.add(p8);
f.addWindowListener(this);
f.setVisible(true);
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void actionPerformed(ActionEvent e) 
{
if(e.getSource() == b1)
{
String str;
str = tf1.getText() + "  " +tf2.getText();//提示此处出错
ls1.add(str);
tf1.setText(""+(Integer.parseInt(tf1.getText())+1));
}
}
public static void main(String [] args)
{
(new AddressList()).display();
}
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub

}
}
提示在98行有问题,看不懂出错原因,请帮忙解决一下。错误信息:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at AddressList.actionPerformed(AddressList.java:98)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

解决方案 »

  1.   

    package draw;import java.awt.*;
    import java.awt.event.*;public class AddressList extends WindowAdapter implements ActionListener,
    ItemListener {
    Frame f; TextField tf1, tf2, tf3, tf4, tf5, tf6, tf7; Label t1, t2, t3, t4, t5, t6; List ls1; Button b1, b2, b3; private Panel p1; private Panel p2; private Panel p3; private Panel p4; private Panel p5; private Panel p6; private Panel p7; private Panel p8; public void display() {
    Frame f = new Frame("AddressList");
    f.setSize(400, 380);
    f.setBackground(Color.lightGray);
    f.setLocation(200, 200);
    f.setLayout(new GridLayout(2, 1));
    ls1 = new List();
    f.add(ls1);
    p1 = new Panel();
    p1.setLayout(new GridLayout(8, 1));
    f.add(p1);
    tf1 = new TextField("1");
    t1 = new Label("name");
    tf2 = new TextField("      ");
    t2 = new Label("birthday");
    tf3 = new TextField("         ");
    t3 = new Label("phoneNumber");
    tf4 = new TextField("          ");
    t4 = new Label("homeAddress");
    tf5 = new TextField("             ");
    t5 = new Label("QQ");
    tf6 = new TextField("         ");
    t6 = new Label("email");
    tf7 = new TextField("          ");
    b1 = new Button("Add");
    b1.addActionListener(this);
    b2 = new Button("query");
    b2.addActionListener(this);
    b3 = new Button("delete");
    b3.addActionListener(this);
    p2 = new Panel();
    p2.setLayout(new FlowLayout(FlowLayout.LEFT));
    p3 = new Panel();
    p3.setLayout(new FlowLayout(FlowLayout.LEFT));
    p4 = new Panel();
    p4.setLayout(new FlowLayout(FlowLayout.LEFT));
    p5 = new Panel();
    p5.setLayout(new FlowLayout(FlowLayout.LEFT));
    p6 = new Panel();
    p6.setLayout(new FlowLayout(FlowLayout.LEFT));
    p7 = new Panel();
    p7.setLayout(new FlowLayout(FlowLayout.LEFT));
    p8 = new Panel();
    p8.setLayout(new FlowLayout(FlowLayout.LEFT));
    p2.add(tf1);
    p2.add(t1);
    p2.add(tf2);
    p3.add(t2);
    p3.add(tf3);
    p4.add(t3);
    p4.add(tf4);
    p5.add(t4);
    p5.add(tf5);
    p6.add(t5);
    p6.add(tf6);
    p7.add(t6);
    p7.add(tf7);
    p8.add(b1);
    p8.add(b2);
    p8.add(b3);
    p1.add(p2);
    p1.add(p3);
    p1.add(p4);
    p1.add(p5);
    p1.add(p6);
    p1.add(p7);
    p1.add(p8);
    f.addWindowListener(this);
    f.setVisible(true);
    } public void windowClosing(WindowEvent e) {
    System.exit(0);
    } public void actionPerformed(ActionEvent e) {
    if (e.getSource() == b1) {
    String str;
    //System.out.println(tf1.getClass());
    //System.out.println(tf2.getText());
    str = tf1.getText() + "  " + tf2.getText();// 提示此处出错
    ls1.add(str);
    tf1.setText("" + (Integer.parseInt(tf1.getText()) + 1));
    }
    } public static void main(String[] args) {
    (new AddressList()).display();
    } public void itemStateChanged(ItemEvent e) {
    // TODO Auto-generated method stub }
    }
      

  2.   

    你在AddressList 类里面定义那么多TextField 什么的,在display函数里面又重新定义,就把外面的给隐藏了而public void actionPerformed(ActionEvent e)里面调用的又是类里的,因为display里定义的只在display函数里有效