当前位置:编程学习 > JAVA >>

Exception in thread "main" java.lang.NullPointerException 解决办法

我是一个JAVA初学者,下面是把书上的程序输了一遍,但运行时出现问题,不知如何解决
望各位  给点力啊 !!

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package netbeans;

/**
 *
 * @author 默
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Vector;
import javax.swing.JOptionPane;

public class Zhujiu {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        ZhuaJiu lot=new ZhuaJiu();
        lot.initialize();
    }
}

class ZhuaJiu  extends JFrame implements ActionListener{
    int WeiZhi =0,Number=0;
    Vector vect=new Vector();
    JButton butLoting,butExit;
    JLabel Lab,Lab1,Lab2;
    JTextField txt;
    public void initialize(){
        setSize(800,550);
        setLocation(100,100);
        this.setLayout(null);
        Font ft1=new Font("宋体",Font.BOLD,35);
        Font ft2=new Font("楷体_GB2312",Font.BOLD,45);
        butLoting=new JButton("清单基本按钮抓阄");
        butLoting.setBounds(180,40,400,45);
        butLoting.setEnabled(false);
        butLoting.addActionListener(this);
        butLoting.setFont(ft1);
        add(butLoting);
        Lab=new JLabel();
        Lab.setBounds(180,200,400,40);
        Lab.setForeground(Color.blue);
        Lab.setFont(ft2);
        Lab2=new JLabel();
        Lab2.setBounds(540,200,80,40);
        Lab2.setForeground(Color.red);
        Lab2.setFont(ft2);
        add(Lab);
        add(Lab2);
        Lab=new JLabel("需要抓到的最大号码是:",JLabel.LEFT);
        Lab.setBounds(180,340,400,35);
        Lab.setForeground(Color.BLACK);
        Lab.setFont(ft1);
        add(Lab1);
        txt=new JTextField("");
        txt.setBounds(540,340,60,35);
        txt.setForeground(Color.BLACK);
        txt.setFont(ft2);
        txt.addActionListener(this);
        add(txt);
        butExit=new JButton("结束");
        butExit.setBounds(300, 420 , 200, 45);
        butExit.setEnabled(false);
        butExit.addActionListener(this);
        butExit.setFont(ft1);
        butExit.setForeground(Color.red);
        add(butExit);
        butExit.setEnabled(true);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==butExit){
            int confirm=JOptionPane.showConfirmDialog(null, "真的要结束抓阄?","确认真的要结束",JOptionPane.YES_NO_CANCEL_OPTION);
            if(JOptionPane.YES_OPTION==confirm)
                System.exit(0);
        }
        if(e.getSource()==txt){
            try{
                Number=Integer.parseInt(txt.getText());
                if(2>Number){
                    JOptionPane.showMessageDialog(null,"输入的数据对抓阄来说没意义,请重新输入。","提示信息",JOptionPane.QUESTION_MESSAGE);
                    return;
                }
            }catch(NumberFormatException ne){
                JOptionPane.showMessageDialog(null, "输入数据类型不对,请重新输入。", "提示信息", JOptionPane.QUESTION_MESSAGE);
                return;
            }
            for(int k=0;k<Number;k++){
                vect.add(new Integer(k+1));
            }
            txt.setEnabled(false);
            Lab1.setEnabled(false);
            butLoting.setEnabled(true);
            Lab.setText("你抓到的号码是:");
            Lab.setVisible(true);
            Lab2.setText("");
            Lab2.setVisible(true);
        }
        if(e.getSource()==butLoting){
            if(Number>0){
                WeiZhi=(int)(Math.random()*Number);
                Lab2.setText(""+vect.elementAt(WeiZhi));
                vect.removeElementAt(WeiZhi);
                if(--Number<=0){
                    butLoting.setEnabled(false);
                    Lab1.setEnabled(true);
                    txt.setEnabled(true);
                }
            }
        }
        
    }
}


下面是结果
Run:
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1086)
at java.awt.Container.add(Container.java:998)
at javax.swing.JFrame.addImpl(JFrame.java:562)
at java.awt.Container.add(Container.java:410)
at netbeans.ZhuaJiu.initialize(Zhujiu.java:61)
at netbeans.Zhujiu.main(Zhujiu.java:25)
Java Result: 1
成功生成(总时间:1 秒) --------------------编程问答-------------------- 你只是定义对象没有 创建,所以照成空异常。
应该在public void initialize(){}

方法改成
最前面加上

          butLoting=new JButton();
  butExit=new JButton();
  Lab=new JLabel();
  Lab1=new JLabel();
  Lab2=new JLabel();
  txt=new JTextField();

也是就 setSize(800,550);
的上面 --------------------编程问答-------------------- 非常感谢 !!!以后还望多多指教! --------------------编程问答--------------------      用这个试试
      butLoting=new JButton();
      butExit=new JButton();
      Lab=new JLabel();
      Lab1=new JLabel();
      Lab2=new JLabel();
      txt=new JTextField();


补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,