1

fillTable()メソッドを呼び出すと、NullPointerExceptionエラーが発生する場所を特定できないようです。fillTableは、textFieldからStringを取り込むボタンから呼び出されます。fillTableは、ハンドラークラスからデータを含むObject[][]を取得することによってJTableにデータを入力することを目的としています。

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();
    }

ボタン:

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

}

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;
    }

他のクラスでも同じテクニックを使用すると、うまくいくようです。

4

1 に答える 1

1

述べたようpLSHandに、コードの他の場所で宣言されていません。

于 2012-12-03T16:37:41.720 に答える