したがって、私のコードは次のようになります。
class Pozadina extends JPanel implements MouseListener {
ArrayList<Pozicija> list;
public Pozicija _11;
public void paintComponent(Graphics g){
ArrayList<Pozicija> list=new ArrayList<Pozicija>();
Pozicija _11=new Pozicija();
_11.setCoords(korak,korak);
list.add(_11);
//lots of drawing here
for (Pozicija p:list) {
if (p.getBelongsTo()==1){
g.setColor(Color.blue);
}
g.fillOval(p.getX(), p.getY(), 20, 20;
g.setColor(Color.black);
}//for loop
}//paintComponent method
そして、私は次のようなメインを持っています:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(630,630);
Pozadina pozadina= new Pozadina();
frame.getContentPane().add(pozadina);
frame.addMouseListener(pozadina);
frame.setVisible(true);
}
そして、次のようなクリックイベントで:
public void mouseClicked(MouseEvent e) {
_11.setPlayer1();
pozadina.repaint();
}
問題は、グラフィックスで_11オブジェクトを作成しているため、マウスのClickedメソッドがnullポインター例外を返すことです。私は Pozicija _11 を持っています。クラスのインスタンス変数として設定しますが、動作しません。これを回避する方法を見つけようとしていますが、私はJavaにかなり慣れていないため、アイデアが不足しています。
編集:このようにしても、Null Point Exceptionエラーが発生します。:S
public void mouseClicked(MouseEvent e) {
/*_11.setPlayer1();
pozadina.repaint();*/
}
そして、「/*_11.setPlayer1();」という行を教えてくれます。何が起こっているのかわかりません。
投稿された 2 つの提案を試してみましたが、クラスのインスタンス変数として常に _11 を使用していましたが、ここではコピーしませんでした。
EDIT2:まず、すべての回答に感謝します。:D インスタンス変数として list と _11 の両方があることを示すためにコードを更新しました。常にこのようでした。コードをコピーするときにコピーしませんでした。最後の編集を確認してください。役立つ場合があります。エラーが発生していると思われる部分にコメントを付けても、エラーが発生するため、何か別の理由でエラーが発生していると想定しています。ありがとう。