我这是一个学生管理系统的修改学生信息的界面,我在主界面选中一行数据后,点击修改按钮本应该可以打开学生信息修改的对话框,但是每次只要直接点击修改按钮,就会在第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, "哈哈");
}

}}