提问人: 提问时间:3/16/2009 最后编辑:kenju 更新时间:9/17/2022 访问量:3217
空指针异常 JLabel
Null pointer exception JLabel
问:
为什么当我尝试在标签上运行它时得到 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)
答:
3赞
Paul Tomblin
3/16/2009
#1
除非 matchPlay 为 null 或 matchPlay.returnPL1GamesWon() 本身抛出 null 指针异常,否则不会出现任何会导致 null 指针异常的内容。
更新:基于异常来自 GUI.makeFrame 的事实,我不得不问你是否真的有一个图形显示?这是命令行应用程序、Swing 应用程序还是小程序?看起来您正在尝试创建一个没有图形上下文的 JLabel。
评论
0赞
brabster
3/16/2009
我认为如果matchPlay.returnPL1GamesWon()返回null,它只会打印'null',而不会抛出NullPointerException?
0赞
Eddie
3/16/2009
是的,布拉布斯特说的。但是,matchPlay.returnPL1GamesWon() 本身可能会抛出 NullPointerException。
0赞
3/16/2009
如果我知道如何使用这个网站,我会准确地发布错误消息<stacktrace 或任何它的名字>但是我确实在上面发表了评论,说这是不可能的
0赞
Paul Tomblin
3/16/2009
@Roberto,您应该能够编辑您的问题 - 只需单击其下方的“编辑”按钮即可。
3赞
brabster
3/16/2009
#2
根据问题中的信息:引用 matchPlay 为 null。
已更新:给定 matchPlay 不能为 null 的信息,则在 matchPlay 上调用的方法必须引发异常。检查上一个方法调用的堆栈跟踪,应该有助于查明问题。
评论
0赞
3/16/2009
不可能是因为matchPlay的其他一些方法正在工作,我有以下私人Game matchPlay<构造函数> matchPlay = new Game() 那么它怎么可能是空的?
0赞
brabster
3/16/2009
啊。你没这么说。在这种情况下,请参阅下面@Paul Tomblin 的回答。
0赞
Roberto Duran
3/16/2009
#3
我已经设法回答了这个问题,
这是我在构造函数中分配字段的顺序
对不起,打扰了
谢谢大家
1赞
Ruwan Pathirana
9/17/2022
#4
更改为:
player1CurrentScore = new JLabel("" + matchPlay.returnPL1GamesWon(),
JLabel.CENTER);
此外,如果发生错误,您可以在公共类中添加 Jlabel 变量,
public class YourClass{
private JLabel player1CurrentScore;
}
评论