【问题标题】:Change numerical value on a button when pressed - javafx [duplicate]按下时更改按钮上的数值-javafx [重复]
【发布时间】: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


【解决方案1】:

您需要在按钮转动之前声明 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");
        }

    }

【讨论】:

  • 啊,哎呀。我已经实现了,但忘了说。
  • int 不能为空。更重要的是 - 未声明的变量永远不会导致NullPointerException,代码根本无法编译。
猜你喜欢
  • 1970-01-01
  • 2016-04-24
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多