程序调了两三天了,一直有个小错误,不知道是哪里出错了!!
程序代码如下:import java.util.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JFrame;class Addstudentfrm extends JFrame implements ActionListener
{
JLabel l_msg,l_name,l_class,l_number,l_birthdate,l_sex,l_place,l_beizhu;
JTextField t_name,t_class,t_number,t_birthdate,t_sex,t_place,t_beizhu;
JButton b_clear,b_add,b_back;
JPanel pan1,pan2,pan3,pan4,pan5,pan6,pan7,pan8,pan9;
//NetConn sql_con; //Connection conn; Student stu = null;
HashMap<String,Student> 学生基本信息表=null;//HashMap<K,V> K - the type of keys maintained by this map;V - the type of mapped values
//Hashtable 学生基本信息表=null;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
FileOutputStream outOne=null;
ObjectOutputStream outTwo=null;
File systemFile;
//String a1,a2,a3,a4,a5,a6,a7;
Addstudentfrm(File file)
{
super("添加学生信息窗口");
systemFile=file;
l_msg =new JLabel("添加学生 ");
l_name =new JLabel("姓 名: ");
l_class =new JLabel("所在班级: ");
l_number =new JLabel("学 号: ");
l_birthdate=new JLabel("出生日期: ");
l_sex =new JLabel("性 别: ");
l_place =new JLabel("籍 贯: ");
l_beizhu =new JLabel("备 注: ");
t_name=new JTextField("",10);
t_class =new JTextField("",10);
t_number =new JTextField("",10);
t_birthdate =new JTextField("",10);
t_sex =new JTextField("",10);
t_place =new JTextField("",10);
t_beizhu =new JTextField("",10);
b_clear =new JButton("清空");
b_add =new JButton("添加");
b_back =new JButton("返回");
b_clear.addActionListener(this);
b_add.addActionListener(this);
b_back.addActionListener(this);
pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();pan4=new JPanel();pan5=new JPanel();pan6=new JPanel();pan7=new JPanel();pan8=new JPanel();pan9=new JPanel();
pan1.add(l_msg);pan2.add(l_name);pan2.add(t_name);pan3.add(l_class);pan3.add(t_class);
pan4.add(l_number);pan4.add(t_number);pan5.add(l_birthdate);pan5.add(t_birthdate);pan6.add(l_sex);pan6.add(t_sex);
pan7.add(l_place);pan7.add(t_place);pan8.add(l_beizhu);pan8.add(t_beizhu);pan9.add(b_clear);pan9.add(b_add);pan9.add(b_back);
setLayout(new GridLayout(9,1));
add(pan1);add(pan2);add(pan3);add(pan4);add(pan5);add(pan6);add(pan7);add(pan8);add(pan9);
//sql_con=new NetConn();
setBounds(350,150,400,500);
}
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent ec)
{
if(ec.getSource()==b_back)
{
dispose();
}
else if(ec.getSource()==b_clear)
{
t_name.setText("");
t_class.setText("");
t_number.setText("");
t_birthdate.setText("");
t_sex.setText("");
t_place.setText("");
t_beizhu.setText("");
l_msg =new JLabel("添加学生 ");
}
else if(ec.getSource()==b_add)
{
if(t_name.getText().equals("")||t_class.getText().equals("")||t_number.getText().equals(""))
{
l_msg.setText("姓名,学号和所属班级不能为空!");
}
else
{
stu=new Student();
String name="";
name=t_name.getText();
System.out.println(stu.getName());
if(name.length()>0){
try{
inOne=new FileInputStream(systemFile);
inTwo=new ObjectInputStream(inOne);
学生基本信息表=(HashMap<String,Student>)inTwo.readObject();
inOne.close();
inTwo.close();
}catch(Exception ee){}
System.out.println(stu.getName());
if(学生基本信息表.containsKey(name)){ //此处有问题!!!!!!
String warning="该生基本信息已存在,请到修改页面修改!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
System.out.println(stu.getName());
}
else{
String m = "学生信息将被录入";
l_msg.setText(m);
System.out.println(stu.getName());
int ok=JOptionPane.showConfirmDialog(this,m,"确认",
JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){ stu.setName(t_name.getText());
stu.setGroup(t_class.getText());
stu.setNumber(t_number.getText());
stu.setBirthdate(t_birthdate.getText());
stu.setSex(t_sex.getText());
stu.setPlace(t_place.getText());
stu.setBeizhu(t_beizhu.getText());
System.out.println(stu.getName());
System.out.println(stu.getGroup());
System.out.println(stu.getNumber());
System.out.println(stu.getBirthdate());
System.out.println(stu.getSex());
System.out.println(stu.getPlace());
System.out.println(stu.getBeizhu());
try { outOne=new FileOutputStream(systemFile);
outTwo=new ObjectOutputStream(outOne);
学生基本信息表.put(name,stu);//put(K key, V value)
outTwo.writeObject(学生基本信息表);
outTwo.close();
outOne.close();
clearMess();
}
catch(Exception ee){}
}
}
}
}
}
}
public void clearMess(){
t_name.setText("");
t_class.setText("");
t_number.setText("");
t_birthdate.setText("");
t_sex.setText("");
t_place.setText("");
t_beizhu.setText("");
l_msg =new JLabel("添加学生 ");
}
}
抛出异常如下:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Addstudentfrm.actionPerformed(Addstudentfrm.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)现已经查出是那个containsKey出了问题,望哪位高手指点一下!!谢谢大家了!!!!
程序代码如下:import java.util.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JFrame;class Addstudentfrm extends JFrame implements ActionListener
{
JLabel l_msg,l_name,l_class,l_number,l_birthdate,l_sex,l_place,l_beizhu;
JTextField t_name,t_class,t_number,t_birthdate,t_sex,t_place,t_beizhu;
JButton b_clear,b_add,b_back;
JPanel pan1,pan2,pan3,pan4,pan5,pan6,pan7,pan8,pan9;
//NetConn sql_con; //Connection conn; Student stu = null;
HashMap<String,Student> 学生基本信息表=null;//HashMap<K,V> K - the type of keys maintained by this map;V - the type of mapped values
//Hashtable 学生基本信息表=null;
FileInputStream inOne=null;
ObjectInputStream inTwo=null;
FileOutputStream outOne=null;
ObjectOutputStream outTwo=null;
File systemFile;
//String a1,a2,a3,a4,a5,a6,a7;
Addstudentfrm(File file)
{
super("添加学生信息窗口");
systemFile=file;
l_msg =new JLabel("添加学生 ");
l_name =new JLabel("姓 名: ");
l_class =new JLabel("所在班级: ");
l_number =new JLabel("学 号: ");
l_birthdate=new JLabel("出生日期: ");
l_sex =new JLabel("性 别: ");
l_place =new JLabel("籍 贯: ");
l_beizhu =new JLabel("备 注: ");
t_name=new JTextField("",10);
t_class =new JTextField("",10);
t_number =new JTextField("",10);
t_birthdate =new JTextField("",10);
t_sex =new JTextField("",10);
t_place =new JTextField("",10);
t_beizhu =new JTextField("",10);
b_clear =new JButton("清空");
b_add =new JButton("添加");
b_back =new JButton("返回");
b_clear.addActionListener(this);
b_add.addActionListener(this);
b_back.addActionListener(this);
pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();pan4=new JPanel();pan5=new JPanel();pan6=new JPanel();pan7=new JPanel();pan8=new JPanel();pan9=new JPanel();
pan1.add(l_msg);pan2.add(l_name);pan2.add(t_name);pan3.add(l_class);pan3.add(t_class);
pan4.add(l_number);pan4.add(t_number);pan5.add(l_birthdate);pan5.add(t_birthdate);pan6.add(l_sex);pan6.add(t_sex);
pan7.add(l_place);pan7.add(t_place);pan8.add(l_beizhu);pan8.add(t_beizhu);pan9.add(b_clear);pan9.add(b_add);pan9.add(b_back);
setLayout(new GridLayout(9,1));
add(pan1);add(pan2);add(pan3);add(pan4);add(pan5);add(pan6);add(pan7);add(pan8);add(pan9);
//sql_con=new NetConn();
setBounds(350,150,400,500);
}
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent ec)
{
if(ec.getSource()==b_back)
{
dispose();
}
else if(ec.getSource()==b_clear)
{
t_name.setText("");
t_class.setText("");
t_number.setText("");
t_birthdate.setText("");
t_sex.setText("");
t_place.setText("");
t_beizhu.setText("");
l_msg =new JLabel("添加学生 ");
}
else if(ec.getSource()==b_add)
{
if(t_name.getText().equals("")||t_class.getText().equals("")||t_number.getText().equals(""))
{
l_msg.setText("姓名,学号和所属班级不能为空!");
}
else
{
stu=new Student();
String name="";
name=t_name.getText();
System.out.println(stu.getName());
if(name.length()>0){
try{
inOne=new FileInputStream(systemFile);
inTwo=new ObjectInputStream(inOne);
学生基本信息表=(HashMap<String,Student>)inTwo.readObject();
inOne.close();
inTwo.close();
}catch(Exception ee){}
System.out.println(stu.getName());
if(学生基本信息表.containsKey(name)){ //此处有问题!!!!!!
String warning="该生基本信息已存在,请到修改页面修改!";
JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
System.out.println(stu.getName());
}
else{
String m = "学生信息将被录入";
l_msg.setText(m);
System.out.println(stu.getName());
int ok=JOptionPane.showConfirmDialog(this,m,"确认",
JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){ stu.setName(t_name.getText());
stu.setGroup(t_class.getText());
stu.setNumber(t_number.getText());
stu.setBirthdate(t_birthdate.getText());
stu.setSex(t_sex.getText());
stu.setPlace(t_place.getText());
stu.setBeizhu(t_beizhu.getText());
System.out.println(stu.getName());
System.out.println(stu.getGroup());
System.out.println(stu.getNumber());
System.out.println(stu.getBirthdate());
System.out.println(stu.getSex());
System.out.println(stu.getPlace());
System.out.println(stu.getBeizhu());
try { outOne=new FileOutputStream(systemFile);
outTwo=new ObjectOutputStream(outOne);
学生基本信息表.put(name,stu);//put(K key, V value)
outTwo.writeObject(学生基本信息表);
outTwo.close();
outOne.close();
clearMess();
}
catch(Exception ee){}
}
}
}
}
}
}
public void clearMess(){
t_name.setText("");
t_class.setText("");
t_number.setText("");
t_birthdate.setText("");
t_sex.setText("");
t_place.setText("");
t_beizhu.setText("");
l_msg =new JLabel("添加学生 ");
}
}
抛出异常如下:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Addstudentfrm.actionPerformed(Addstudentfrm.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)现已经查出是那个containsKey出了问题,望哪位高手指点一下!!谢谢大家了!!!!
解决方案 »
- 键盘事件监视器KeyListener 不可以注册给 JFrame或者其隐含的容器,或者其中的JPane吗?
- 关于时间的一点问题 请各位大大看下~
- 高手指教
- jxl图片插入问题
- setLayout什么用的
- 问个问!
- 求教:如何把.jar.zip包中的文件解到指定目录的方法
- 请问jbuilder6里光标错位问题如何解决
- 请问java中如何实现报表设计问题?
- 高手请进:
- 类中的方法 在实例化以后 内存上的分配是怎么样的?可以解释一下吗?
- 我找到windows installer可是启动不了,按启动后提示:本地计算机的的windows installer服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的.例如:性能日志和敬报的服务.
catch(Exception ee){} 这样的写法很不正确,如果出错了,而你却什么都不知道