【发布时间】:2016-11-28 21:21:31
【问题描述】:
我正在寻找一种方法来使按钮在按下时从“玩家 1 结束回合”变为“玩家 2 结束回合”。以下是我所拥有的:
private int pTurn = 1;
Button turn = new Button();
turn.setText("Player " + pTurn + " End Turn");
turn.setOnAction(new turnButton());
//There is code between these two blocks, but it isn't important for
//this question I don't think
class turnButton implements EventHandler<ActionEvent> {
@Override
public void handle(ActionEvent event) {
pTurn++;
if (pTurn == 3) {
pTurn = 1;
}
turn.setText("Player " + pTurn + " End Turn");
}
}
当我运行它并按下按钮时,我收到以下错误:
Executing /Users/bronsonlane/NetBeansProjects/FinalProject/dist/run1715909217/FinalProject.jar using platform /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/bin/java
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at halma.Halma$turnButton.handle(Halma.java:234)
at halma.Halma$turnButton.handle(Halma.java:227)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
【问题讨论】:
-
堆栈跟踪清楚地告诉您问题出在第 234 行。那是哪一行代码?
-
turn似乎是null。为什么?没办法说,因为代码 sn-ps 脱离了上下文。 -
@VGR 第 234 行是 "turn.setText("Player " + pTurn + " End Turn");"
-
@fabian 我不确定为什么 pTurn 为空。我将它声明为类中的变量并设置为 1,然后让此方法更改它。
-
pTurn是原始的,因此不能是null。该处理程序中唯一取消引用的变量是turn,而不是pTurn
标签: java button text javafx actionevent