0

当我尝试在标签上运行它时,为什么会得到 NullPointerException:

JLabel player1CurrentScore = new JLabel("" + matchPlay.returnPL1GamesWon(),
                                        JLabel.CENTER);

是因为我不能像这样连接两个字符串吗?

理想情况下,我试图将标签设置为玩家的分数,以便可以在需要时正确递增。

这是我的异常堆栈转储:

java.lang.NullPointerException
at GUI.makeFrame(GUI.java:71)
at GUI.<init>(GUI.java:28)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at bluej.runtime.ExecServer$3.run(ExecServer.java:808)
4

3 回答 3

3

除非 matchPlay 为 null 或 matchPlay.returnPL1GamesWon() 本身引发空指针异常,否则不会导致空指针异常。

更新:基于异常来自 GUI.makeFrame 的事实,我不得不问你是否真的有图形显示?这是命令行应用程序、Swing 应用程序还是 Applet?看起来您正在尝试创建没有图形上下文的 JLabel。

于 2009-03-16T14:44:28.683 回答
3

根据问题中的信息:参考 matchPlay 为空。

更新:鉴于 matchPlay 不能为 null 的信息,那么在 matchPlay 上调用的方法必须抛出异常。检查上一个方法调用的堆栈跟踪,应该有助于查明问题。

于 2009-03-16T14:44:58.043 回答
0

我已经设法回答了,

这是我在构造函数中分配字段的顺序

抱歉打扰

感谢大家

于 2009-03-16T15:15:26.690 回答