2014-01-27 113 views
0

我對我的數獨的應用程序GUI類的行會引發空異常「異常線程‘AWT-EventQueue的-0’顯示java.lang.NullPointerException」 1431NullPointerException異常在定製mousevent方法

private String click(int x, int y) { 
     String dialog = null; 
     if (5==5/*sudoku1.grid[x][y].isEditable()==true*/)  { 
      dialog = JOptionPane.showInputDialog("Enter Input:"); 
      int input = Integer.parseInt(dialog);     
1431:  sudoku1.grid[x][y].setValue(input); 


     } 
     else { 
      //JOptionPane.showMessageDialog(...); 
     } 
    return dialog; 
    } 

在開始類對象sudoku1聲明:

public class ClassicGUI extends javax.swing.JFrame { 
private boolean finished; 
Sudoku sudoku1; 
private final int size = 9; 

和主方法的run()創建的:

public void run() { 
    new ClassicGUI().setVisible(true); 
    System.out.println("Testing GUI..."); 
    sudoku1 = new Sudoku(size); 
    sudoku1.makeGrid(size); 
    } 

網格對象我s的二維陣列類型單元格:

public void makeGrid(int size) { 
     this.lines=size; 
     grid = new Cell[lines][lines]; 
     for(int i=0;i<size;i++) 
       for(int j=0;j<size;j++) { 
        grid[i][j] = new Cell(); 
        grid[i][j].setValue(0); 
       } 
     } 

所以適當的方法來訪問grid [x] [y]。數組中的對象也在makeGrid()方法中初始化。爲什麼空異常錯誤?

P.S. -S ... x和y座標範圍從0-8,並有觀點點擊方法如下圖所示

private void jLabel28MouseClicked(java.awt.event.MouseEvent evt) {          
    jLabel28.setText(click(3, 0)); 
} 
+0

你打包點擊​​的x和y值是多少?你在哪裏打電話點擊? –

+0

我使用調色板繪製了gui。所以在網格中的任何地方我都會彈出同樣的異常!點擊(x,y)被調用,因爲您可以在jlabels動作事件的castom代碼中看到abose。所以,想象我按下3,0 – user3240664

回答

0

最有可能的,sudoku1.grid[x][y]是:如果評論,因爲我有同樣的異常有第一評估爲null。然後當你調用null的setset(輸入)時,你得到NPE。

嘗試更改您的代碼以使其自身符合.setValue(input)。我不清楚你的例子究竟是什麼數據類型sudoku1.grid[x][y]應該評估。

編輯:我想這sudoku1.grid本身可能爲空。我認爲這是你的Sudoku類的公共成員(你沒有向我們提供類定義?)。

底線是你正在得到NullPointerException,因爲你在一個對象上調用一個方法爲null。如果您不確定如何在您的環境中使用調試器,解決此問題的另一種方法是通過分解該代碼行來隔離問題。它做了一些不同的事情,如果你想找到問題,你應該儘量減少它在每一行上做一件事。

+0

setValue(input)是存儲整數(value = input)的Cell Cell上的一個方法。它的聲明非常簡單 'public void setValue(int input){ value = input; }爲'私人int值;'在開始 – user3240664

+0

是的我可以想象創建的對象似乎爲空,但我不明白爲什麼它們被初始化,你可以看到。像sudoku字段公開的那樣是'公共類Sudoku擴展javax.swing.JFrame {0} {0} {0} public static int lines; public cell [] [] grid;' – user3240664

相關問題