Salary.java的208行是什么?出现空指针异常了,是否可能有没有初始化的变量?

解决方案 »

  1.   

    table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1);
    这时我的table中已经有16行的数据在里面了
    为什么还会是空指针异常呢?
      

  2.   

    这句话没有问题,能多看点代码吗?table是全局变量吗?你不会在方法里又定义了一次吧
      

  3.   

    actionPerformed方法里面的
    if(event.getSource()==insertButton)
    里面的注释语句:
    //int value = table.getRowHeight()*tableModel.dataRows.size()+1;
    //table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1);
      

  4.   

    actionPerformed方法里面的
    if(event.getSource()==insertButton)
    里面的注释语句:
    //int value = table.getRowHeight()*tableModel.dataRows.size()+1;
    //table.setRowSelectionInterval(table.getRowCount() -1, table.getRowCount() -1);
      

  5.   

    应该没有问题的,你看看是不是没有选中表的某几行就执行了actionPerformed.
    下面是我的actionPerformed方法,供参考
      public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("增加列"))
          defaultModel.addColumn("增加列");
        if (e.getActionCommand().equals("增加行"))
          defaultModel.addRow(new Vector());
        if (e.getActionCommand().equals("删除列")) {
          int columncount = defaultModel.getColumnCount() - 1;
          if (columncount >= 0) {
            TableColumnModel columnModel = table.getColumnModel();
            TableColumn tableColumn = columnModel.getColumn(columncount);
            columnModel.removeColumn(tableColumn);
            defaultModel.setColumnCount(columncount);
          }
        }
        if (e.getActionCommand().equals("删除行")) {
          int rowcount = defaultModel.getRowCount() - 1;
          int rowcountSelected = table.getSelectedRow();
          System.out.println("rowcount:: " + rowcount);
          if (rowcountSelected >= 0) {
            defaultModel.removeRow(rowcountSelected);
            defaultModel.setRowCount(rowcount);
          }
        }
        if (e.getActionCommand().equals("确定")) {
          vcResult = defaultModel.getDataVector();
          Vector paraFieldNamesVc = new Vector();
          String tmpParaName = null;
          String tmpInitMode = null;
          String tmpInitClause = null;
          String tmpChangeMode = null;
          for (int i = 0; i < vcResult.size(); i++) {        //校验参数名称
            tmpParaName = null;
            if (defaultModel.getValueAt(i, 0) != null)
              tmpParaName = defaultModel.getValueAt(i, 0).toString().trim();
            if (tmpParaName == null || tmpParaName.equals("")) {
              JOptionPane.showMessageDialog(dialog, "参数名不能为空!");
              return;
            }
            if (tmpParaName != null && tmpParaName.length() > 32) {
              JOptionPane.showMessageDialog(dialog, "参数名长度不能超过32!");
              return;
            }
            if (tmpParaName != null) {
              Matcher m = Pattern.compile("[\\d\\w]+").matcher(tmpParaName);
              StringBuffer f = new StringBuffer();
              while (m.find()) {
                f.append(m.group());
              }
              System.out.println("f: " + f);
              if (!f.toString().equals(tmpParaName)) {
                JOptionPane.showMessageDialog(dialog, "参数名只能包括数字和字母!");
                return;
              }
            }        //校验初始化方式和变化方式
            tmpInitMode = null;
            if (defaultModel.getValueAt(i, 1) != null)
              tmpInitMode = defaultModel.getValueAt(i, 1).toString().trim();
            if (tmpInitMode == null) {
              JOptionPane.showMessageDialog(dialog, "必须选择初始化方式!");
              return;
            }        tmpInitClause = null;
            if (defaultModel.getValueAt(i, 2) != null)
              tmpInitClause = defaultModel.getValueAt(i, 2).toString().trim();
            if (tmpInitClause == null) {
              JOptionPane.showMessageDialog(dialog, "初始化语句不能为空!");
              return;
            }
            if (tmpInitClause != null && tmpInitClause.length() > 100) {
              JOptionPane.showMessageDialog(dialog, "初始化语句长度不能超过100!");
              return;
            }//        tmpChangeMode = null;
    //        if (defaultModel.getValueAt(i, 3) != null)
    //           tmpChangeMode = defaultModel.getValueAt(i, 3).toString().trim();
    //        if(tmpChangeMode == null)  {
    //          JOptionPane.showMessageDialog(dialog, "必须选择初始化方式!");
    //          return;
    //        }        paraFieldNamesVc.add(tmpParaName);
          }
          this.setVcResult(vcResult);
          taskDialog.paraField.setText(paraFieldNamesVc.toString());
          dialog.dispose();
          System.out.println("vcResult::" + this.getVcResult());
        }
        table.revalidate();
      }