2016-12-27 15 views
1

を使用して、私は、Javaチェスゲームの開発中に問題が発生しています比較的未経験のプログラマです。私はLinkedListの個々の部分を保持するHandler classを作成しました。個々の部分をマウスで選択し、移動するために必要なx座標とy座標をそれぞれに変更する機能を組み込みたいと考えています。私MouseClicked()方法で各オブジェクトのgetXメソッドとのgetYへのmouseClicked内のfor-eachループ

私はLinkedList内のすべてのPieceオブジェクトのfor-eachループを実行し、それぞれの座標を確認してください。ループが次の例外を実行するため、ここで問題が発生します。

"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException." 

この問題を解決するにはどうすればよいですか?

は、ここに私のmouseClicked()内のコードを次の:

public void mouseClicked(MouseEvent e) { 
    int x = e.getX(); 
    int y = e.getY(); 
    System.out.println(e.getX() + " " + e.getY()); 
    if(clickMode == 0) 
    { 
     for(Piece pi: handler.piece) 
     { 
      if(x >= pi.getX() && x <= pi.getX() + 75 && y >= pi.getY() && y <= pi.getY() + 75) 
      { 
       System.out.println("Piece Selected"); 
       pi.isSelected = true; 
       clickMode = 1; 
      } 
     } 
    } 
    else 
    { 
     for(Piece pi: handler.piece) 
     { 
      if(pi.isSelected == true) 
      { 
       System.out.println("Piece Moved"); 
       pi.setX(x); 
       pi.setY(y); 

       pi.isSelected = false; 
      }        
     } 
     clickMode = 0; 
    }    
} 
+0

nullを確認するコードをデバッグしようとしましたか? (ヒントがヌルかフィールド 'piece'の場合は' handler'をチェックします) – n247s

+0

私はちょうどそれを行い、問題を解決しました!ありがとう! –

答えて

0

あなたNullPointerExceptionの原因として最も可能性が高いという点でのいずれかの場所あなたのLinkedListインスタンス化された作品が含まれていません。つまり、handlerインスタンスがインスタンス化されていません。使用しているすべてのオブジェクトが構築されていることを確認してください。

+0

私はそれを確認して、あなたに連絡します。 –

+0

この回答は、問題を解決するために私を導いた、ありがとう! –

+0

私はピースの作成に使用したのと同じハンドラオブジェクトを使用しなければなりませんでした。 –

関連する問題