按下时更改按钮上的数值-javafx
我正在寻找一种方法,使按钮从说“玩家1结束回合”更改为“玩家2结束回合”时按下。以下是我所拥有的:按下时更改按钮上的数值-javafx,java,button,text,javafx,actionevent,Java,Button,Text,Javafx,Actionevent,我正在寻找一种方法,使按钮从说“玩家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
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");
}
}
您需要在打开按钮之前声明pTurn变量。pTurn未设置,正在返回null
int pTurn = 1;
Button turn = new Button();
turn.setText("Player " + pTurn + " End Turn");
turn.setOnAction(new turnButton());
class turnButton implements EventHandler<ActionEvent> {
@Override
public void handle(ActionEvent event) {
pTurn++;
if (pTurn == 3) {
pTurn = 1;
}
turn.setText("Player " + pTurn + " End Turn");
}
}
intpturn=1;
按钮转动=新按钮();
回合.setText(“玩家”+pTurn+“结束回合”);
turn.setOnAction(新的turnButton());
类turnButton实现EventHandler{
@凌驾
公共无效句柄(ActionEvent事件){
pTurn++;
如果(pTurn==3){
pTurn=1;
}
回合.setText(“玩家”+pTurn+“结束回合”);
}
}
啊,哎呀。我已经实现了,但忘了这么说。int
不能为空。更重要的是-未声明的变量永远不会导致NullPointerException
,代码将无法编译。堆栈跟踪清楚地告诉您问题出在第234行。那是哪一行代码?turn
似乎是null
。为什么?无法判断,因为代码段与上下文无关。@VGR第234行是“turn.setText”(“Player”+pTurn+“End turn”);“@fabian我不确定pTurn为什么为空。我在类中将它声明为变量并设置为1,然后让此方法更改它。pTurn
是基本的,因此不能为null
。该处理程序中唯一未引用的变量是turn
,而不是pTurn
int pTurn = 1;
Button turn = new Button();
turn.setText("Player " + pTurn + " End Turn");
turn.setOnAction(new turnButton());
class turnButton implements EventHandler<ActionEvent> {
@Override
public void handle(ActionEvent event) {
pTurn++;
if (pTurn == 3) {
pTurn = 1;
}
turn.setText("Player " + pTurn + " End Turn");
}
}