JavaFX TextField 导致 NullPointerException

JavaFX TextField causes NullPointerException

我正在使用带有事件的按钮来控制用户的输入,但我无法检查 TextField 是否为空。 TextField 和 Button 在按钮事件之前声明,如

TextField svar = new TextField();
Button submitB = new Button("submit");

这是我的代码:

submitB.setOnAction((event) -> {

        if (svar.getText().equals(null) {
        primaryStage.setTitle("No input!");
        }

        if (svar.getText().subSequence(0, 1).toString().toLowerCase().equals(animals.get(pic).getName().subSequence(0, 1).toString().toLowerCase())) {
            primaryStage.setTitle("RÄTT!");
            bild.setImage(new Image(animals.get(pic+=1).getImgsrc()));
            svar.setText(null);
            svar.requestFocus();
        }
        else 
        {
            primaryStage.setTitle("FEL!");
            svar.setText(null);
            svar.requestFocus();
        }

    });

上面这段代码是我认为应该处理 TextField 为空的情况的代码:

        if (svar.getText().equals(null) {
        primaryStage.setTitle("No input!");
        }

但是无论如何我仍然收到 NullPointerException。我尝试了一些不同的解决方案,但都失败了,我希望有人能给我指出正确的方向。谢谢!

与其调用 equals 来检查 null,不如使用“==”,例如:

 if (svar.getText() == null) {

你得到 NPE (NullPointerException) 的原因是,因为正如你所说 svar.getText() 是 null,你正试图在 null 上调用 equals 和 NPE 的原因。

正确的做法不是检查 Null,而是检查空字符串:

if (svar.getText().equals("") {
    primaryStage.setTitle("No input!");
}

有些人更喜欢:

if ("".equals(svar.getText() {
    primaryStage.setTitle("No input!");
}