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相关