2012-12-03 67 views
1

我似乎無法找到我得到NullPointerException在調用方法fillTable()時出錯。 fillTable是從按鈕中調用的,它來自textField中的String。 fillTable是爲了通過從處理程序類中檢索包含數據的Object [] []來填充JTable。NullPointerException調用fillTable時出錯()

private void fillTable(String dataType, String searchBy) 
    { 
     String[] columnName = {"module name", "Workshop %", "Lecture %", "Tutorial %", "Average %"}; 
     if(searchBy.startsWith("@")) 
     { 
      tableModel.setDataVector(pLSHand.gIStudData(dataType, searchBy), columnName); 
      table.setModel(tableModel); 
     } 
     else 
     { 
      tableModel.setDataVector(pLSHand.gNStudData(dataType, searchBy), columnName); 
      table.setModel(tableModel); 
     } 
     table.repaint(); 
    } 

按鈕:在Handler類

public Object[][] gIStudData(String dType, String studID) 
    { 

     String rQuery = "SELECT * FROM StudAttYear WHERE studentID = '"+ studID +"'"; 
     data = new Object[1][5]; 

     if(dType.equalsIgnoreCase("Semester")) 
     { 
      rQuery = "SELECT * FROM StudAttSem WHERE studentID = '"+ studID +"'"; 
      data = new Object[2][5]; 
     } 
     else if(dType.equalsIgnoreCase("Year")) 
     { 
      rQuery = "SELECT * FROM StudAttYear WHERE studentID = '"+ studID +"'"; 
      data = new Object[1][5]; 
     } 
     else if(dType.equalsIgnoreCase("Week")) 
     { 
      rQuery = "SELECT * FROM StudAttWeek WHERE studentID = '"+ studID +"' AND number = '"+ weekNo +"'"; 
      data = new Object[12][5]; 
     } 

     try{ 
       Class.forName(DRIVER_CLASS); 

       connection = DriverManager.getConnection(url,"agile", "adila"); 
       statement = connection.createStatement(); 
       results = statement.executeQuery(rQuery); 
       int i=0; 
       while(results.next()) 
       { 
        data[i][0] = results.getString("module"); 
        data[i][1] = results.getString("workshop%"); 
        data[i][2] = results.getString("tutroial%"); 
        data[i][3] = results.getString("lecture%"); 
        data[i][4] = results.getString("avg%"); 
       i++; 
       } 
      results.close(); 
      statement.close(); 
      connection.close(); 
      } catch (SQLException sqlException) { 
      sqlException.printStackTrace(); 
      System.exit(1); 
      }catch(Exception exception) { 
      System.err.println("An error happened"); 
      System.exit(1); 
     } 
     return data; 
    } 

使用其他類相同的技術,他們似乎工作

String searchBy = (String)textField.getText(); 
if(!searchBy.isEmpty()) 
{ 
    fillTable("Year",searchBy); 
} 
else 
{ 

} 

方法。

+1

NPE消息會告訴您哪些行涉及異常,並且您需要從那裏開始。如果仍然卡住,你應該告訴我們那些是哪條線。 –

+0

是'tableModel'' null'? – durron597

+0

另外,'pLSHand''null'? – durron597

回答

1

如上所述,pLSHand未在您的代碼中的其他地方聲明。

相關問題