所以我的代码看起来像这样:
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
然后我的 main 看起来像这样:
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 方法返回空指针异常。我确实有 Pozicija _11;设置为类的实例变量,但它不起作用。我试图弄清楚如何避免这种情况,但我对 java 还很陌生,而且我的想法已经用完了。
编辑:即使我这样做,我也会收到 Null Point Exception 错误。:S
public void mouseClicked(MouseEvent e) {
/*_11.setPlayer1();
pozadina.repaint();*/
}
它告诉我它的行“/*_11.setPlayer1();”。不知道发生了什么。
我确实尝试了 2 个发布的建议,我总是将 _11 作为类中的实例变量,我只是没有在这里复制它。
EDIT2:首先,感谢所有答案。:D 我已经更新了我的代码以显示我有 list 和 _11 作为实例变量,它总是这样,我只是在复制我的代码时没有复制它。请检查最后的编辑,它可能会帮助你。我假设我因为其他原因而出错,因为即使我对我认为导致错误的部分发表评论,我仍然会出错。谢谢。