请大神帮忙看看这个空指针异常

Earl_yuan 2013-06-22 03:19:45
我这是一个学生管理系统的修改学生信息的界面,我在主界面选中一行数据后,点击修改按钮本应该可以打开学生信息修改的对话框,但是每次只要直接点击修改按钮,就会在第73行报一个空指针的异常。如果我先点击主界面的其他按钮,即使不进行任何操作,再点击修改按钮就可以打开修改界面的对话框。请大神们帮忙看看我的这段代码,到底是哪出了问题?谢谢了!(ps:中间那段排版很恶心的代码不用看,是使用netbeans生成的布局的东西)
package Earl.stuinfo;

import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.swing.JOptionPane;

import Earl.main.stuModel;

public class StuUpdate extends javax.swing.JDialog implements ActionListener {

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField10;
private javax.swing.JTextField jTextField11;
private javax.swing.JTextField jTextField12;
private javax.swing.JTextField jTextField13;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;
private javax.swing.JTextField jTextField6;
private javax.swing.JTextField jTextField7;
private javax.swing.JTextField jTextField8;
private javax.swing.JTextField jTextField9;

// End of variables declaration


public StuUpdate(Frame owner,String title,boolean modal, stuModel stum,int rowNum) {
super(owner,title,modal);
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();

jTextField1 = new javax.swing.JTextField();
jTextField1.setText((String)stum.getValueAt(rowNum, 0));
jTextField2 = new javax.swing.JTextField();
jTextField2.setText((String)stum.getValueAt(rowNum, 1));
jTextField3 = new javax.swing.JTextField();
jTextField3.setEditable(false);
jTextField3.setText((String)stum.getValueAt(rowNum, 2));
jTextField4 = new javax.swing.JTextField();
jTextField4.setText((String)stum.getValueAt(rowNum, 3));
jTextField5 = new javax.swing.JTextField();
jTextField5.setText((String)stum.getValueAt(rowNum, 4));
jTextField6 = new javax.swing.JTextField();
jTextField6.setText((String)stum.getValueAt(rowNum, 5));
jTextField7 = new javax.swing.JTextField();
jTextField7.setText((String)stum.getValueAt(rowNum, 6));
jTextField8 = new javax.swing.JTextField();
jTextField8.setText((String)stum.getValueAt(rowNum, 7));
jTextField9 = new javax.swing.JTextField();
jTextField9.setText((String)stum.getValueAt(rowNum, 8));
jTextField10 = new javax.swing.JTextField();
jTextField10.setText((String)stum.getValueAt(rowNum, 9));
jTextField11 = new javax.swing.JTextField();
jTextField11.setText((String)stum.getValueAt(rowNum, 10));
jTextField12 = new javax.swing.JTextField();
jTextField12.setText((String)stum.getValueAt(rowNum, 11));
jTextField13 = new javax.swing.JTextField();
jTextField13.setText((String)stum.getValueAt(rowNum, 12));

jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jLabel14 = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

jLabel1.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel1.setText("姓 名:");

jLabel2.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel2.setText("性 别:");

jLabel3.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel3.setText("学 号:");

jLabel4.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel4.setText("民 族:");

jLabel5.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel5.setText("院 系:");

jLabel6.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel6.setText("专 业:");

jLabel7.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel7.setText("身份证号:");

jLabel8.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel8.setText("宿舍号:");

jLabel9.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel9.setText("政治面貌:");

jLabel10.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel10.setText("特 长:");

jLabel11.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel11.setText("手 机:");

jLabel12.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel12.setText("E-mail:");

jLabel13.setFont(new java.awt.Font("幼圆", 1, 18)); // NOI18N
jLabel13.setText(" QQ :");

jButton1.setText("保存");
jButton1.addActionListener(this);
jButton2.setText("退出");
jButton2.addActionListener(this);
jMenu1.setText("File");

jMenuItem1.setText("退出");
jMenu1.add(jMenuItem1);
jMenuItem1.addActionListener(this);
jMenuBar1.add(jMenu1);

jMenu2.setText("Help");

jMenuItem2.setText("关于");
jMenu2.add(jMenuItem2);

jMenuBar1.add(jMenu2);
jMenuItem2.addActionListener(this);
setJMenuBar(jMenuBar1);

//此处是关于程序界面布局的代码,由于帖子发不下,故省略

this.setResizable(false);
this.setLocation(300, 100);
this.setVisible(true);

}


@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("保存")) {
PreparedStatement ps = null;
Connection con = null;
ResultSet rs = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
con = DriverManager
.getConnection(
"jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=earl_db",
"sa", "");
String sql = "insert into stuinfo values(?,?,?,?,?,?,?,?,?,?,?,?,?)";
ps = con.prepareStatement(sql);
ps.setString(1, jTextField1.getText());
ps.setString(2, jTextField2.getText());
ps.setString(3, jTextField3.getText());
ps.setString(4, jTextField4.getText());
ps.setString(5, jTextField5.getText());
ps.setString(6, jTextField6.getText());
ps.setString(7, jTextField7.getText());
ps.setString(8, jTextField8.getText());
ps.setString(9, jTextField9.getText());
ps.setString(10, jTextField10.getText());
ps.setString(11, jTextField11.getText());
ps.setString(12, jTextField12.getText());
ps.setString(13, jTextField13.getText());

ps.executeUpdate();
this.dispose();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}

}
if (ae.getActionCommand().equals("退出")) {
this.dispose();
}
if (ae.getActionCommand().equals("关于")) {
JOptionPane.showMessageDialog(this, "哈哈");
}

}

}


...全文
209 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Earl_yuan 2013-06-23
  • 打赏
  • 举报
回复
引用 3 楼 a1006570862 的回复:
楼主你这边设置监听类是方法时候为何要连接一开始就要连接数据库。数据库应该在DB类里面连接的
这个规范我知道,但是写这个小项目比较急就没想那么多,那里用到了就在那里连接数据库
Earl_yuan 2013-06-23
  • 打赏
  • 举报
回复
引用 2 楼 a1006570862 的回复:
这么恶心的代码,楼主恶心了也不放过我们,真的是太有独乐乐不如众乐乐的奉献精神了
就是的,这么恶心的代码我怎么能独自享受呢?
Earl_yuan 2013-06-23
  • 打赏
  • 举报
回复
引用 1 楼 wanghongtao0508 的回复:
检查一下是不是调用StuUpdate(Frame owner,String title,boolean modal, stuModel stum,int rowNum)方法时stum为空?
应该怎么测试呢,新手求指导..
WinterFall 2013-06-22
  • 打赏
  • 举报
回复
stum null。。。。
火影之贺 2013-06-22
  • 打赏
  • 举报
回复
显然是在构造StuUpdate对象的时候, public StuUpdate(Frame owner,String title,boolean modal, stuModel stum,int rowNum) stum传入一个null对象进来。
地下室森林 2013-06-22
  • 打赏
  • 举报
回复
楼主你这边设置监听类是方法时候为何要连接一开始就要连接数据库。数据库应该在DB类里面连接的
地下室森林 2013-06-22
  • 打赏
  • 举报
回复
这么恶心的代码,楼主恶心了也不放过我们,真的是太有独乐乐不如众乐乐的奉献精神了
wanghongtao0508 2013-06-22
  • 打赏
  • 举报
回复
检查一下是不是调用StuUpdate(Frame owner,String title,boolean modal, stuModel stum,int rowNum)方法时stum为空?

62,614

社区成员

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

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