JavaFX中的随机NullPointerException

JavaFX中的随机NullPointerException,javafx,nullpointerexception,Javafx,Nullpointerexception,我的第一个问题是 所以我刚刚开始学习JavaFX,我在学校已经学习了一年的普通Java编码,所以当我遇到这个问题时,我有点困惑: 我开始在JavaFX Scene Builder中创建一个基本的GUI,它有几个按钮、一个文本字段和一个状态指示器,当我单击buttonListen时,我希望buttonToggle消失并显示状态指示器(spinWheel)。以下是处理以下问题的代码: @FXML private TextField fieldDisplay; private Button butto

我的第一个问题是

所以我刚刚开始学习JavaFX,我在学校已经学习了一年的普通Java编码,所以当我遇到这个问题时,我有点困惑:

我开始在JavaFX Scene Builder中创建一个基本的GUI,它有几个按钮、一个文本字段和一个状态指示器,当我单击
buttonListen
时,我希望
buttonToggle
消失并显示状态指示器(
spinWheel
)。以下是处理以下问题的代码:

@FXML
private TextField fieldDisplay;
private Button buttonToggle;
private Button buttonListen;
private ProgressIndicator spinWheel;

@FXML
private void ButtonListenListener(ActionEvent event){
    if(buttonToggle.isVisible()){
        buttonToggle.setVisible(false);
        spinWheel.setVisible(true);
    }
}   
对于熟悉JavaFX的人来说,所有这些都包含在FXMLDocumentController.java类中。然而,当我运行程序时,有一个很长的错误堆栈,但它归结为以下语句,即我的一个按钮上有一个空指针:

Caused by: java.lang.NullPointerException
at javafxfirstproj.FXMLDocumentController.ButtonListenListener(FXMLDocumentController.java:45)

我听说JavaFX充满了bug,所以我想知道这是我的代码中的一个逻辑错误,还是我刚刚遇到了很多bug中的一个。任何和所有的帮助都将不胜感激。谢谢。

我需要查看更多您的代码(特别是FXML和加载它的代码),但我猜问题在这里:

@FXML
private TextField fieldDisplay;
private Button buttonToggle;
private Button buttonListen;
private ProgressIndicator spinWheel;
@FXML
表示法仅适用于紧跟其后的声明(
fieldDisplay
的声明)。如果
按钮切换
按钮列表
旋转盘
也链接到FXML,则还需要对它们进行注释:

@FXML
private TextField fieldDisplay;
@FXML
private Button buttonToggle;
@FXML
private Button buttonListen;
@FXML
private ProgressIndicator spinWheel;

如果您正在FXML中创建/声明Javafx组件/节点/控件,并且希望在Java控制器类中使用它,那么对于要使用的每个组件,都应该有@FXML注释。因此,在代码中添加FXML注释

@FXML
private TextField fieldDisplay;
@FXML
private Button buttonToggle;
@FXML
private Button buttonListen;
@FXML
private ProgressIndicator spinWheel;
如果您不这样做,那么当您这样使用这些组件时,它们不会被指定任何对象

if(buttonToggle.isVisible())

它将为您提供NullPointerException


查看博客的代码连接部分

谢谢你的回答。感谢您的帮助。感谢您的回答,我感谢您的帮助,因为我是JavaFX新手。@user5047031没问题!我实际上教了一门课程,其中包括JavaFX,这是学生们面临的一个常见问题。看到它再次出现是很有趣的